// MARK: - LifeCycle
// viewDidLoad 是 UIViewController 的一個生命週期方法,它會在視圖加載後自動調用
override func viewDidLoad()
{
super.viewDidLoad() // 調用父類的 viewDidLoad 方法
setupUI() // 初始化 UI
setupDelegates() // 初始化 delegates
updateColorView() // 更新顏色顯示
updateControls() // 更新控制元件的狀態(例如,是否啟用Slider)
}
我們這邊介紹其中一個,如何設置UI
// MARK: - UI Settings
// 初始化整個 UI
func setupUI() {
// 使用自定義的 setupColorUI 方法初始化各個顏色的 UI
setupColorUI(type: .red,
slider: redSlider,
valueField: redValue,
switchButton: redSwitch)
setupColorUI(type: .green,
slider: greenSlider,
valueField: greenValue,
switchButton: greenSwitch)
setupColorUI(type: .blue,
slider: blueSlider,
valueField: blueValue,
switchButton: blueSwitch)
// 設置調色板(palatte)的邊界和圓角
palatte.layer.borderWidth = 5
palatte.layer.cornerRadius = 20
palatte.layer.borderColor = UIColor.black.cgColor
// 設置十六進制顏色碼(hexTextField)的文字對齊方式
hexTextField.textAlignment = .center
// 對 alphaSlider(透明度Slider)進行旋轉
alphaSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi / 2))
// 設置 imageView 的初始圖片
imageView.image = UIImage(named: "p1")
// 設置 alphaSlider 的初始值
alphaSlider.value = 1
// 將某些視圖元件帶到前景,以確保它們在其他元件之上
view.bringSubviewToFront(redValue)
view.bringSubviewToFront(greenValue)
view.bringSubviewToFront(blueValue)
view.bringSubviewToFront(palatte)
}
這個方法是用於初始化整個 UI 的。它主要做了以下幾件事:
// 這個方法用於初始化單個顏色的 UI
func setupColorUI(type: ColorType,
slider: UISlider,
valueField: UITextField,
switchButton: UISwitch) {
// 使用 Enum 中的 color 屬性來設置開關和Slider的顏色
switchButton.onTintColor = type.color
slider.minimumTrackTintColor = type.color
// 設置文字欄位的文字顏色和對齊方式
valueField.textColor = .white
valueField.textAlignment = .center
// 設置Slider的最大值和文字欄位的初始值
slider.maximumValue = type.sliderMaxValue
valueField.backgroundColor = .clear
valueField.text = "\(Int(type.defaultSliderValue))"
}
這個方法是用於初始化單一顏色(紅、綠、藍)的 UI 控件。它接受四個參數: