iOS-UISwitch开关基本使用

无论哪种客户端或者网页,开关控件都是必备的,在Android中提供了Switch控件,而iOS则提供了UISwitch。日常开发中,设计师一般都是按照iOS的设计风格来设计,所以安卓原生的Switch基本派不上用场,基本都是自定义View来实现。iOS客户端则可以直接用UISwitch。

UISwitch默认样式.png

创建开关

UISwitch通过alloc和init就可以创建了,注意要显示必须设置按钮的frame,否则不会显示,而且UISwitch的宽、高都不能修改,就算设置了也没效果。

@interface ViewController ()

@property(nonatomic, strong) UISwitch *pushSwitch;

@end

@implementation ViewController

/**
 * 懒加载按钮开关
 */
- (UISwitch *)pushSwitch {
    if (_pushSwitch == nil) {
        _pushSwitch = [[UISwitch alloc] init];
        //位置的x,y可以改,但是按钮宽、高不可以改,就算设置了也没效果
        _pushSwitch.frame = CGRectMake(100, 200, 80, 40);
        //设置按钮在屏幕中心
        _pushSwitch.center = CGPointMake(self.view.center.x, self.view.center.y);
    }
    return _pushSwitch;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //将开关添加到控制器的View
    [self.view addSubview:self.pushSwitch];
}

@end

设置样式

默认开关样式:

  • 开:绿色背景,白色圆形滑块。
  • 关:透明背景,白色圆形滑块。

除了默认样式,苹果爸爸还我我们提供了以下Api设置一些按钮的样式

  1. 设置开关-开时的背景颜色
UISwitch设置开样式.png
//设置开时的背景为橙色,默认绿色
[self.pushSwitch setOnTintColor: [UIColor orangeColor]];
  1. 设置圆形滑块的颜色
UISwitch设置滑块颜色.png
//设置圆形滑块的颜色为绿色,开关的开和关时都为这种颜色,默认为白色
[self.pushSwitch setThumbTintColor: [UIColor greenColor]];
  1. 设置按钮关闭时的边框颜色
UISwitch设置关闭时的边框颜色.png
//按钮关闭时的边框颜色为紫色,只在按钮关闭时边框的颜色,按钮背景为透明,不能被修改
[self.pushSwitch setTintColor:[UIColor purpleColor]];

基本使用

  • 手动设置按钮的开、关,分为带动画和不带动画2种
//设置开关状态,不带动画
self.pushSwitch.on = YES;
//设置开关状态,带动画
[self.pushSwitch setOn:YES animated:YES];
  • 设置按钮切换事件回调监听
//设置开关切换事件
- (void)viewDidLoad {
    [super viewDidLoad];
    //将开关添加到控制器的View
    [self.view addSubview:self.pushSwitch];
    //设置开关切换事件
    [self.pushSwitch addTarget:self action:@selector(switchChange:) forControlEvents:UIControlEventValueChanged];
}

/**
 * 按钮切换事件监听回调方法
 */
- (void) switchChange:(UISwitch*)sw {
    if(sw.on == YES) {
        NSLog(@"开关切换为开");
    } else if(sw.on == NO) {
        NSLog(@"开关切换为关");
    }
}

示例

例如设置页面的推送开关,每次开关记录到本地,每次页面进入时回显之前设置的开关状态。本地保存方式有很多种,我们这里选用简单的NSUserDefaults来保存即可。

@interface ViewController ()

@property(nonatomic, strong) UISwitch *pushSwitch;

@end

/**
 * 推送开关本地存储标识Key
 */
static NSString* const SWITCH_KEY = @"PUSH_IS_OPEN";

@implementation ViewController

//省略上面提到的按钮创建和初始化...

- (void)viewDidLoad {
    [super viewDidLoad];
    //...省略事件监听设置
    
    //使用NSUserDefaults,回显之前的开关配置
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //设置开关状态,不带动画
    self.pushSwitch.on = [defaults objectForKey:SWITCH_KEY];
}

- (void) switchChange:(UISwitch*)sw {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if(sw.on == YES) {
        NSLog(@"开关切换为开");
    } else if(sw.on == NO) {
        NSLog(@"开关切换为关");
    }
    [defaults setBool:sw.on forKey:SWITCH_KEY];
}

@end
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容