更新:2018.05.24
整理了一下demo:SwiftDemo
在一些APP中,經(jīng)常出現(xiàn)的滑動開關,就是用UISwitch來實現(xiàn)的,UISwitch可以輕松的實現(xiàn)一個具有開和關的選擇功能控件。
1. 創(chuàng)建UISwitch
let uiSwitch = UISwitch(frame: CGRect(x: 100, y: 50, width: 100, height: 100))
uiSwitch.setOn(true, animated: true)
view.addSubview(uiSwitch)
a. 在上面代碼中,我們創(chuàng)建了一個位置在 (100,50),寬高都是100的UISwitch控件,但你運行項目,所得到的控件的大小并不是(100,100):

Apple官方說明,對UISwitch設置大小是無效的,其永遠保持在(51,31)的大小。
b. 第二行代碼中,設置了switch的狀態(tài)為開啟狀態(tài),并在界面繪制的時候伴隨動畫,如果第二個屬性設置的是false就不會有動畫。
2. 設置UISwitch
uiSwitch.thumbTintColor = UIColor.red
uiSwitch.onTintColor = UIColor.green
uiSwitch.tintColor = UIColor.blue
// ios7之后,這兩個屬性沒有作用
uiSwitch.onImage = UIImage(named: "tab1")
uiSwitch.offImage = UIImage(named: "tab2")
uiSwitch.addTarget(self, action: #selector(switchClick), for: .valueChanged)
func switchClick(uiSwitch:UISwitch) {
print(uiSwitch.isOn)
}

c. 從上面圖中我們可以看出來:
- thumbTintColor :圓按鈕的顏色
- onTintColor:開啟狀態(tài)下及開啟狀態(tài)下邊框顏色
- tintColor:關閉狀態(tài)下及關閉狀態(tài)下邊框顏色
- onImage和offImage :廢的,沒什么用
d.利用Target-Action機制,當撥動switch選項時,就會調(diào)用UIControlEvents.valueChanged事件,通過addTarget(self, action: #selector(switchClick), for: .valueChanged)方法,就會調(diào)用switchClick()方法。