使用滑块选择视图背景的颜色

Use slider to pick a color for view's background

我正在尝试编写一个函数来帮助我从滑块中选择彩虹色并将其设置在视图背景上。

滑块应呈现所有彩虹色,并且当用户滑动它时,视图背景会随之变化。

我做了类似的事情,但它只显示一种颜色:

@IBOutlet var 滑块:UISlider! @IBAction func changeColor(sender: AnyObject) {

    var increment:CGFloat = 0.05
    var counter = slider.value

    for counter = 1; counter<=20; counter++ {
        for var hue:CGFloat=0.0; hue < 1.0; hue+=increment {

                var color = UIColor(hue: hue, saturation: 1.0, brightness: 1.0, alpha: 1.0)
                self.view.backgroundColor = color
        }
    }
}

这里循环没有意义。您的代码忽略滑块值并始终执行循环,最后将颜色设置为 1.0 的色调。 (整个循环执行了 20 次!所以内部代码实际上总共 运行 400 次,20 x 20。)

您可以将背景颜色设置为单一颜色:

@IBOutlet var slider: UISlider!       

@IBAction func changeColor(sender: AnyObject) {
  var colorValue = CGFloat(slider.value)
  var color = UIColor(hue: colorValue, saturation: 1.0, brightness: 1.0, alpha: 1.0)
  self.view.backgroundColor = color
}

这假设您在 InterfaceBuilder 中将滑块的最小值保留为 0,将最大值保留为 1.0。

编辑: 由于 slider.value 从 0 到 1.0,它反映了色调的允许值。我们可以将其转换为 CGFloat 并直接使用它。谢谢@leo。

这样试试:

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor(hue: 0.5, saturation: 1, brightness: 1, alpha: 1)
    }
    @IBAction func colorChanged(_ slider: UISlider) {
        view.backgroundColor = UIColor(hue: CGFloat(slider.value), saturation: 1, brightness: 1, alpha: 1)
    }
}