iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Mobile Development

ios前端開發學習系列 第 12

【Day12】認識如何使用 PickerView (以調色盤為例)

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230830/20161850wwuqSAWNZt.png

首先我們先設定 PickerView 的 Connection 來當元件的 referencing Outlet

// MARK: - Variables
    
let colors = ["Black", "Red", "Orange", "Yellow", "Green", "Cyan", "Blue",
              "Magenta", "Purple", "Brown", "Pink", "BluePurple", "White"]
    
// 用來存儲顏色名稱和對應的 RGB 值的字典
let colorValues: [String: (CGFloat, CGFloat, CGFloat)] = [
    "Black": (0, 0, 0),
    "Red": (1, 0, 0),
    "Orange": (1, 0.647, 0),
    "Yellow": (1, 1, 0),
    "Green": (0, 1, 0),
    "Cyan": (0, 1, 1),
    "Blue": (0, 0, 1),
    "Magenta": (1, 0, 1),
    "Purple": (0.5, 0, 0.5),
    "BluePurple": (0.25, 0.25, 1),
    "Brown": (0.7, 0.4, 0.3),
    "Pink": (1, 0.5, 0.75),
    "White": (1, 1, 1)
]

然後設定 colors 陣列越來存放彩虹顏色和 RGB&CMYK 還有一些有的沒的~~
colorValues 是字典用來表示顏色的RGB值(通常是(8-bit) 0~255 大家可以把喜歡的值除255(Floating point)就設置完成)

class MainViewController: UIViewController, 
UIPickerViewDelegate, UIPickerViewDataSource {

我們需要再 class 中加入 UIPickerViewDelegate & UIPickerViewDataSource

  1. UIPickerViewDelegate: 這個協定定義了用戶與 UIPickerView 互動時會觸發的各種方法。
    例如 : 你可以透過實現這個協定中的方法來知道用戶選擇了哪一行,或者來自定義每一行的外觀。
  2. UIPickerViewDataSource: 這個協定負責提供 UIPickerView 所需的數據。
    例如 : 你需要告訴 UIPickerView 有多少列(components)和每一列有多少行(rows)。

用途 : 實現這些協定中的方法,用來控制 UIPickerView 的行為和外觀。提供必要的數據給 UIPickerView。

// 這個函數定義了 UIPickerView 的組件(components)數量。
// 在這個例子中,我們只有一個組件,用於顯示顏色列表。
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
​
// 這個函數定義了每個組件有多少行(rows)。
// 我們使用 `colors` 陣列的元素數量作為行數。
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return colors.count
}
​
// 這個函數提供了每一行的標題(title)。
// 標題是從 colors 陣列中取出的,對應於當前的行索引。
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return colors[row]
}
​
// 這個函數會在用戶選擇 UIPickerView 的某一行後被調用。
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    // 從 colors 陣列中取出用戶選擇的顏色名稱。
    let colorName = colors[row]
​
    // 調用 updateSelectedColor 方法以更新 UI,該方法會根據選擇的顏色名稱來設置相應的顏色。
    updateSelectedColor(colorName)
}
  • numberOfComponents(in:): 返回 UIPickerView 的 column 數量。
  • pickerView(_:numberOfRowsInComponent:): 返回特定 column 中的 row 數量。
  • pickerView(_:titleForRow:forComponent:): 設定每個 row 的標題。
  • pickerView(_:didSelectRow:inComponent:): 處理用戶選擇某一個 row 後的行為。

上一篇
【Day11】如何在swift設定元件交互(以調色盤為例)
下一篇
【Day13】認識如何使用 viewDidLoad (以調色盤為例)
系列文
ios前端開發學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言