首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 三個 Slider 即時控制 Label 背景色:RGB 三通道獨立綁定、即時刷新 UIColor

     編輯:程式設計綜合問答

需求:三個 `UISlider` 分別對應 R/G/B,拖動即時改變同頁 `UILabel` (或整頁) 背景色。

核心邏輯

  1. 建立三個 Slider,`minimumValue=0`、`maximumValue=1`、`continuous=true`。
  2. 各自綁定 `UIControlEventValueChanged` → 同一更新方法或分方法。
  3. 更新方法內讀取三 Slider `.value` (0~1),構造 `UIColor(red:green:blue:alpha:)` 賦給目標視圖 `.backgroundColor`。

Swift 5 完整範例 (Storyboard/XIB 免註冊)

class ViewController: UIViewController {
    @IBOutlet weak var redSlider: UISlider!
    @IBOutlet weak var greenSlider: UISlider!
    @IBOutlet weak var blueSlider: UISlider!
    @IBOutlet weak var colorLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        [redSlider, greenSlider, blueSlider].forEach {
            $0?.addTarget(self, action: #selector(sliderChanged), for: .valueChanged)
        }
        updateColor()
    }

    @objc func sliderChanged() {
        updateColor()
    }

    func updateColor() {
        let r = CGFloat(redSlider.value)
        let g = CGFloat(greenSlider.value)
        let b = CGFloat(blueSlider.value)
        colorLabel.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
        // 若要改整頁背景:view.backgroundColor = ...
    }
}

Objective-C 參考實現 (含釋放記憶體手動管理)

原最佳回答提供的 OC 代碼邏輯正確,但屬於 MRC 時代風格 (`release`/`autorelease`),現代專案請啟用 ARC,刪除所有 `release` 呼叫。

進階體驗優化

  • 顯示當前 RGB 數值:`String(format: "R:%.0f G:%.0f B:%.0f", r*255, g*255, b*255)`。
  • 支援十六進位色碼輸出:`#RRGGBB` 複製功能。
  • 加入 `UISlider` 彈簧動畫:`UIView.animate(withDuration: 0.1) { self.colorLabel.backgroundColor = newColor }`。

核心:**Slider `value` (0~1) 直接映射 `UIColor` RGBA,`ValueChanged` 事件即時觸發重繪。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved