我們在 UI 元件設定完成後,接下來要來設定元件的功能設定!
我們在設定元件的動作行為時,需要用到 IBAction
也是跟拉 IBOutlet
時一樣的拉法喔!
// MARK: - IBAcion
// View 的 顏色控制
@IBAction func SliderSum(_ sender: Any) {
vRGB.backgroundColor = UIColor(
//除以255,因為顏色範圍是0~255
red: CGFloat((sldRedValue.value)/255),
green: CGFloat((sldGreenValue.value)/255),
blue: CGFloat((sldBlueValue.value)/255),
alpha: 1
)
}
@IBAction func SliderToText(_ sender: UISlider) {
// RGB 顏色數值的顯示,顯示在 TextField
txfRedText.text = "\(Int(sldRedValue.value))"
txfGreenText.text = "\(Int(sldGreenValue.value))"
txfBlueText.text = "\(Int(sldBlueValue.value))"
// 呼叫 View,將 Slider 的值傳入 View 顯示顏色
SliderSum(sender)
}
我們一樣用 IBAction
的方式設定好 func
內容的部分因為其實 RGB 三個顏色寫法都是一樣的所以我這邊就只展示紅色作為範例
剩下就給各位練習啦!
@IBAction func TextToSlider(_ sender: UITextField) {
// Red
if let redStringValue = txfRedText.text {
// 限制輸入的值只能用 Int
if let redIntValue = Int(redStringValue) {
// 限制數值最高為255,超過255會自動變成255
// 最低為0,低於0也會因為max而自動變為0
let redValue = max(0, min(255,redIntValue))
sldRedValue.setValue(Float(redValue), animated: true)
txfRedText.text = "\(redValue)"
// 不是數字的話會自動歸0
} else {
sldRedValue.setValue(0, animated: true)
txfRedText.text = "0"
}
// 沒有輸入值的話會自動歸0
} else {
sldRedValue.setValue(0, animated: true)
}
//Green
if let greenStringValue = txfGreenText.text {...}
//Blue
if let blueStringValue = txfBlueText.text {...}
//程式執行完之後,和 SliderToText 一樣要呼叫 SliderSum,改變 View的顯示顏色!
SliderSum(sender)
}
這兩天簡單的帶著大家做簡易的調色盤專案,並熟悉實作過程!
明天開始會逐漸增加難度並讓大家更熟練的製作專案喔!