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控件的开关状态时进行了当前视图背景颜色的转换。