- iOS开发实战:从入门到上架App Store(第2版) (移动开发丛书)
- 张益珲
- 539字
- 2020-11-28 14:56:44
2.6 开关控件——UISwitch
UISwitch是UIKit框架中的一个十分小巧简洁的控件,用于一些简单的切换功能逻辑中,在很多Apple自行开发的应用中,这个控件的使用率也非常高。
2.6.1 创建一个开关控件
使用Xcode创建一个名为UISwitchTest的工程,在ViewController类的viewDidLoad方法中添加如下代码。
Swift语言版本:
override func viewDidLoad() { super.viewDidLoad() let swi = UISwitch(frame: CGRect(x: 100, y: 100, width: 100, height: 40)) swi.onTintColor = UIColor.green swi.tintColor = UIColor.red swi.thumbTintColor = UIColor.orange self.view.addSubview(swi) }
Objective-C语言版本:
- (void)viewDidLoad { [super viewDidLoad]; UISwitch * swi = [[UISwitch alloc]initWithFrame:CGRectMake(100, 100, 100, 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方法进行触发方法的添加,代码如下。
Swift语言版本:
swi.addTarget(self, action: #selector(changeColor), for: .touchUpInside)
Objective-C语言版本:
[swi addTarget:self action:@selector(changeColor:) forControlEvents:UIControlEventValueChanged];
这里实现的触发方法使用带一个参数值的函数,系统传入的参数为UISwitch对象本身,方法实现代码如下。
Swift语言版本:
func changeColor(swi:UISwitch) { if (swi.isOn) { self.view.backgroundColor = UIColor.red; }else{ self.view.backgroundColor = UIColor.white; } }
Objective-C语言版本:
-(void)changeColor:(UISwitch *)swi{ if (swi.isOn) { self.view.backgroundColor = [UIColor redColor]; }else{ self.view.backgroundColor = [UIColor whiteColor]; } }
UISwitch的isOn属性是一个布尔值,通过这个值可以判断UISwitch控件的开关状态,然后分别进行相应的操作即可,这里在切换UISwitch控件的开关状态时进行了当前视图背景颜色的转换。