首先我們先設定 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
UIPickerViewDelegate:
這個協定定義了用戶與 UIPickerView 互動時會觸發的各種方法。UIPickerViewDataSource:
這個協定負責提供 UIPickerView 所需的數據。用途 :
實現這些協定中的方法,用來控制 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 後的行為。