正如分段控件代替了單選按鈕,開關也代替了點選框。開關是到目前為止用起來最簡單的控件,不過仍然可以作一定程度的定制化。
一、創建
- UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(200.0,10.0,0.0,0.0)];
是不是很奇怪,大小竟然是0.0×0.0,沒錯,系統會自動幫你決定最佳的尺寸,你自己寫的尺寸會被忽略掉,你只要定義好相對父視圖的位置就好了。關於純代碼創建控件請參看我的另一篇博文:
《有關View的幾個基礎知識點》 http://www.linuxidc.com/Linux/2012-02/55370p2.htm
二、顯示控件
- [ parrentView addSubview:mySwitch];//添加到父視圖
或
- self.navigationItem.titleView = mySwitch;//添加到導航欄
二、開關狀態
開關狀態可以通過它的on屬性讀取,這個屬性是一個BOOL值,表示開關是否被打開:
- BOOL switchStatus = mySwitch.on;
你可以在你的代碼中用setOn方法來打開或關閉開關:
- [ mySwitch setOn:YES animated:YES];
三、通知
想要在開關狀態切換時收到通知,可以用UIControl類的addTarget方法為UIControlEventValueChanged事件添加一個動作。
- [ mySwitch addTarget: self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];
這樣,只要開關一被切換目標類(上例中目標類就是當前控制器self)就會調用switchValueChanged方法,是不是很棒呢?
- - (void) switchValueChanged:(id)sender{
- UISwitch* control = (UISwitch*)sender;
- if(control == mySwitch){
- BOOL on = control.on;
- //添加自己要處理的事情代碼
- }
- }
了解了開關之後是不是覺得很棒呢?是不是發現有好多地方可以用到它?覺得不錯就馬上寫點代碼體驗一下吧!