iOS UISwitch 开关的基本用法
最编程
2024-05-05 13:39:47
...
无论哪种客户端或者网页,开关控件都是必备的,在Android中提供了Switch控件,而iOS则提供了UISwitch。日常开发中,设计师一般都是按照iOS的设计风格来设计,所以安卓原生的Switch基本派不上用场,基本都是自定义View来实现。iOS客户端则可以直接用UISwitch。
创建开关
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设置一些按钮的样式
- 设置开关-开时的背景颜色
//设置开时的背景为橙色,默认绿色
[self.pushSwitch setOnTintColor: [UIColor orangeColor]];
- 设置圆形滑块的颜色
//设置圆形滑块的颜色为绿色,开关的开和关时都为这种颜色,默认为白色
[self.pushSwitch setThumbTintColor: [UIColor greenColor]];
- 设置按钮关闭时的边框颜色
//按钮关闭时的边框颜色为紫色,只在按钮关闭时边框的颜色,按钮背景为透明,不能被修改
[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
上一篇: Switch SDFile V10.11 破解指南
下一篇: 使用 brew 服务管理服务
推荐阅读
-
iOS UISwitch 开关的基本用法
-
[Elasticsearch <3>✈️✈️] 常用基本属性的用法及与 MySQL 的区别
-
GreenDao 的基本用法和版本升级
-
微信 "扫一扫 "物联网,全面揭秘 "扫一扫 "背后的扫盲技术!-1.1 扫一扫感知物体是做什么的? 1.1 微信扫一扫是做什么的? 扫一扫识物是指以图片或视频(商品图片:鞋/包/美妆/服饰/家电/玩具/图书/食品/珠宝/家具/其他商品)为输入媒介,挖掘微信内容生态中的有价值信息(电商+百科+资讯,如图1所示),并展示给用户。这里的电商基本涵盖了微信小程序覆盖上亿SKU的全量优质电商,可以支持用户货比N家并直接下单购买,百科和资讯则聚合了微信内的头部自媒体如搜狗、搜搜、百度等,向用户展示和分享拍摄商品相关的内容资讯。 图 1 扫一扫识别功能示意图 欢迎大家更新iOS新版微信→扫一扫→识货,亲自体验,也欢迎大家通过识货界面的反馈按钮向我们提交反馈意见。 扫一扫识物实景图展示 1.2 扫一扫识物有哪些使用场景? 扫一扫识物的目的是为用户访问微信内部生态内容开辟一个新窗口,以用户扫图片为输入形式,为用户提供微信生态内容中的百科、资讯、电商等作为展示页面。除了用户熟悉的扫一扫操作外,我们还将进一步拓展长按操作,让用户更方便地进行扫一扫操作。"扫一扫知事 "的落地场景主要涵盖三大部分: a. 科普知识: a.科普知识。用户通过扫一扫,可以在微信生态圈中获取该对象的百科、资讯等常识或趣闻,帮助用户更好地了解该对象; b.购物场景。同样的搜索功能支持用户看到喜欢的商品立即检索到微信小程序电商中的同款商品,支持用户即扫即购; c.广告场景。扫一扫识别物体可以辅助公众号文章、视频更好地理解其中蕴含的图片信息,从而更好地投放匹配广告,提高点击率。 1.3 Sweep Sense 为 Sweep 家族带来了哪些新技术? 对于扫一扫来说,大家耳熟能详的应该就是扫一扫二维码、扫一扫小程序码、扫一扫条形码、扫一扫翻译了。无论是各种形式的编码还是文字字符,都可以看作是图片的一种特定编码形式,而物的识别则是对自然场景图片的识别,这对于扫一扫家族来说是一个质的飞跃,我们希望从物的识别入手,进一步拓展扫一扫对自然场景图片的理解能力,比如扫酒、扫车、扫植物、扫人脸等服务,如下图3所示。 图 3 Sweep 家族
-
java 输入扫描仪的基本用法
-
iOS 中的枚举用法
-
OllyDbg 的基本用法
-
新手福利 - OllyICE 和 xllydbg 的区别和基本用法
-
[系统安全] IV.OllyDbg动态分析工具的基本用法和Crakeme反向破解
-
R 中的开关函数用法