iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Mobile Development

ios 的小小實驗室 !系列 第 3

DAY 3 『 RGB調色盤 - 每個物件的功能 』Part2

  • 分享至 

  • xImage
  •  

RGB調色盤:view + slider * 3 + textfield * 3

昨天介紹了如何拉物件,今天來教各位如何寫出每個物件的功能!
今天主要講解:

  1. 按空白處收回鍵盤
  2. textField 改變 slider
  3. slider 改變 textField
  4. 顯示顏色

除了講解程式碼之外,還會附上截圖以供參考。


  1. 由於調色盤可以透過 textField 輸入數值,因此當模擬器的鍵盤跳出時,會沒有對應的程式使它收起鍵盤,故在 override func viewDidLoad() 底下新增鍵盤收起的功能
// 按空白處收回鍵盤
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyBoard))

// to Replace "TouchesBegan"
self.view.addGestureRecognizer(tap)

在 override func viewDidLoad() 外新增鍵盤收起的 @objc

// 按空白處收回鍵盤
@objc func dismissKeyBoard() { self.view.endEditing(true) }

  1. 在 @IBAction 寫「 textField 改變 slider 」的函數
//  textField 改變 slider
@IBAction func TextFieldToSilder(textField: UITextField) {

    // 用 guard let 判斷 textField.text 是否為空值,若有值則stringColor = textField.text;反之,跳出迴圈不會往下執行
    guard let stringColor = textField.text else {return}
    
    // 將 stringColor 得到的值轉換成 Int 型態
    guard let intColor = Int(stringColor)else {return}
    
    // 用 switch case 去判斷我是在哪個 textField 輸入值
    switch textField {
    case redtext:
        redslider.setValue(Float(intColor), animated: true)
    case greentext:
        greenslider.setValue(Float(intColor), animated: true)
    case bluetext:
        blueslider.setValue(Float(intColor), animated: true)
    default: break
    }
}

  1. 在 @IBAction 寫「 slider 改變 textField 」的函數
    textField 的 Value 屬性是 text,是文字。而 Slider 的 Value 則是 CGFloat,所以型別上需要做轉換才可以正常顯示。
//  slider 改變 textField
@IBAction func SliderToTextField(_ sender: Any) {

    redtext.text = "\(Int(redslider.value))"
    greentext.text = "\(Int(greenslider.value))"
    bluetext.text = "\(Int(blueslider.value))"
}

  1. 在 @IBAction 寫顯示顏色的函數
    RGB 是 255 / 255 去設定,所以 RGB 滑桿的參數設定如果要設置 max = 255,那這樣對應的值就要除以 255,這樣圖片的顏色才會顯示正確。
//  顯示顏色
@IBAction func colorchange(_ sender: Any){
    showcolor.backgroundColor = UIColor(red: CGFloat(redslider.value)/255, green: CGFloat(greenslider.value)/255, blue: CGFloat(blueslider.value)/255, alpha: 1)
}


明天會介紹:

  1. TextFieldDelegate 如何寫出 textField 的輸入限制
  2. @IBAction 與 storyboard 的拉線

敬請期待!


上一篇
DAY 2 『 RGB調色盤 』Part1
下一篇
DAY 4 『 RGB調色盤 - TextFieldDelegate、@IBAction 』Part3
系列文
ios 的小小實驗室 !30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言