iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Mobile Development

ios前端開發學習系列 第 13

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

  • 分享至 

  • xImage
  •  
// MARK: - LifeCycle
    
// viewDidLoad 是 UIViewController 的一個生命週期方法,它會在視圖加載後自動調用
override func viewDidLoad()
{
    super.viewDidLoad() // 調用父類的 viewDidLoad 方法

    setupUI()           // 初始化 UI
    setupDelegates()    // 初始化 delegates
    updateColorView()   // 更新顏色顯示
    updateControls()    // 更新控制元件的狀態(例如,是否啟用Slider)
}

為什麼使用 viewDidLoad

  • 初始化設定: 這是一個好地方來做一些初始化的工作,比如設定 UI 元件的初始狀態、加載數據等。
  • 性能: 因為 viewDidLoad 只會被調用一次,所以這裡的代碼不會多次執行,有助於改善應用性能。
  • 邏輯分離: 它有助於將初始化相關的邏輯從其他生命週期方法(例如 viewWillAppear 或 viewDidAppear)中分離出來,使代碼更容易管理。

我們這邊介紹其中一個,如何設置UI

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

// 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)
}

setupUI 方法

這個方法是用於初始化整個 UI 的。它主要做了以下幾件事:

  1. 初始化各個顏色的 UI: 這裡使用了 setupColorUI 這個自定義方法,用於初始化紅色、綠色和藍色的 UI 控件(Slider、文字欄位和開關)。
  2. 調色板設置: 設置調色板(palatte)的外觀,包括邊界寬度、圓角以及邊界顏色。
  3. 文字對齊: 對於十六進制顏色碼(hexTextField)的文字,這裡設置了文字對齊方式為居中。
  4. Slider 旋轉: 對 alphaSlider 進行了旋轉,使其呈垂直狀態。
  5. 圖片設置: 初始化了 imageView 的圖片。
  6. 層次設置: 使用 bringSubviewToFront 方法將某些視圖元件置於前面,以確保它們顯示在其他元件之上。
// 這個方法用於初始化單個顏色的 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))"
}

setupColorUI 方法

這個方法是用於初始化單一顏色(紅、綠、藍)的 UI 控件。它接受四個參數:

  1. type: 顏色類型(可能是一個 Enum),用於區分是紅色、綠色還是藍色。
  2. slider: 對應的 Slider 控件。
  3. valueField: 顯示顏色數值的文字欄位。
  4. switchButton: 開關按鈕,用於開啟或關閉該顏色。

更多介紹

  • 避免在 viewDidLoad 中做過多的計算或網絡請求,以免影響性能。
  • 如果有需要在視圖每次出現時更新的操作,則更適合放在 viewWillAppear 或 viewDidAppear 中。

上一篇
【Day12】認識如何使用 PickerView (以調色盤為例)
下一篇
【Day14】認識如何使用 IBAction (以調色盤為例)
系列文
ios前端開發學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言