12.UISwitch

UISwitch

UISwitch就是一個開關, 用起來也非常簡單, 下面我們學習如何使用它

1. UISwitch創建

let switchView = UISwitch(frame: CGRect(x: 200, y: 20, width: 300, height: 300))
switchView.on = false
self.view.addSubview(switchView)

運行程序:
UISwitch創建
我們發現,開關的on屬性可以控制UISwitch的開關狀態,UISwitch的寬高是固定的,如我們設置寬高爲300,300, 但它的實際大小是固定的.

2. UISwitch的定製

我們查看UISwitch的定義

@available(iOS 5.0, *)
public var onTintColor: UIColor? // 開狀態的顏色
@available(iOS 6.0, *) 
public var tintColor: UIColor! // 關狀態的顏色
@available(iOS 6.0, *)
public var thumbTintColor: UIColor? // 中間小塊的顏色

@available(iOS 6.0, *)
public var onImage: UIImage? // 開狀態的圖片,這屬性沒用了
@available(iOS 6.0, *)
public var offImage: UIImage? // 關狀態的圖片,這屬性沒用了

現在我們完成一個定製需求:
開關的開狀態顏色是紅色,關狀態是黑色,中間小塊的顏色是粉色

switchView.onTintColor = UIColor.redColor()
switchView.tintColor = UIColor.blackColor()
switchView.thumbTintColor = UIColor.magentaColor()

運行程序
UISwitch的定製

現在我們使用圖片試試:

switchView.onImage = UIImage(named: "onImage")
switchView.offImage = UIImage(named: "offImage")

運行程序:
使用圖片
我們發現,根本沒卵用, 然後查看文檔, 說ios7之後這兩屬性已經沒效果了.+_+!!

3. UISwitch狀態改變監聽

和UISlider非常類似, 監聽UIControlEvents.ValueChanged即可

switchView.addTarget(self, action: "switchChangeAction:", forControlEvents: .ValueChanged)

func switchChangeAction(sender: UISwitch) {
   if(sender.on) {
        print("開關已開")
    } else {
        print("開關已關")
    }
}

運行程序, 我們切換開關的狀態, 控制檯會打印出不同的值

4. 完整代碼


import UIKit

class ViewController6: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let switchView = UISwitch(frame: CGRect(x: 200, y: 20, width: 300, height: 300))
        switchView.on = true

        self.view.addSubview(switchView)

        switchView.onTintColor = UIColor.redColor()
        switchView.tintColor = UIColor.blackColor()
        switchView.thumbTintColor = UIColor.magentaColor()

//        switchView.onImage = UIImage(named: "onImage")
//        switchView.offImage = UIImage(named: "offImage")

        switchView.addTarget(self, action: "switchChangeAction:", forControlEvents: .ValueChanged)
    }

    func switchChangeAction(sender: UISwitch) {
        if(sender.on) {
            print("開關已開")
        } else {
            print("開關已關")
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章