- iOS开发实战:从零基础到App Store上架
- 张益珲编著
- 462字
- 2021-04-02 21:41:43
2.6 开关控件——UISwitch
UISwitch 是UIKit 框架中的一个十分小巧简洁的控件,其用于一些简单的切换功能逻辑中,在很多Apple自行开发的应用中,这个控件的使用率也是非常高的。
2.6.1 创建一个开关控件
使用Xcode创建一个名为UISwitchTest的工程,在ViewController.m的viewDidLoad方法中添加如下代码。
- (void)viewDidLoad { [super viewDidLoad]; UISwitch * swi = [[UISwitch alloc]initWithFrame:CGRectMake(100, 100, 1 00, 40)]; swi.onTintColor = [UIColor greenColor]; swi.tintColor = [UIColor redColor]; swi.thumbTintColor = [UIColor orangeColor]; [self.view addSubview:swi]; }
UISwitch 的功能十分简单,因此其可设置的属性也十分有限,onTintColor 属性用于设置控件开启状态的填充色,tintColor属性设置控件关闭状态的边界色,thumbTintColor属性设置开关按钮的颜色,运行工程,效果如图2-25和图2-26所示。
图2-25 关闭状态的UISwitch空间
图2-26 开启状态的UISwitch控件
2.6.2 为UISiwtch控件添加触发方法
UISwitch 也属于用户交互控件,可以为其添加交互方法来处理某些开与关的逻辑。UISwitch继承于UIControl,继承于UIControl的类都可以通过addTarget:action:forControlEvents:方法来进行触发方法的添加,代码如下:
[swi addTarget:self action:@selector(changeColor:) forControlEvents:UICon trolEventValueChanged];
这里实现的触发方法使用带一个参数值的函数,系统传入的参数即为UISwitch对象本身,方法实现代码如下:
-(void)changeColor:(UISwitch *)swi{ if (swi.isOn) { self.view.backgroundColor = [UIColor redColor]; }else{ self.view.backgroundColor = [UIColor whiteColor]; } }
UISwitch的isOn属性是一个BOOL值,通过这个值可以判断UISwitch控件的开关状态,然后分别进行相应的操作即可,这里在切换UISwitch控件的开关状态时进行了当前视图背景颜色的转换。