我正在尝试编写一个函数来帮助我从滑块中选择彩虹色并将其设置在视图背景上。
滑块应该显示所有彩虹色,当用户滑动时,根据它查看背景变化。
我做了类似的事,但它只显示一种颜色:
@IBOutlet var slider: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
}
}
}
答案 0 :(得分:3)
这里有一个循环没有意义。您的代码忽略滑块值并始终通过循环,最后将颜色设置为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,因此它会镜像hue的允许值。我们可以将它转换为CGFloat并直接使用它。谢谢@leo。
答案 1 :(得分:2)
试试这样:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(hue: 0.5, saturation: 1, brightness: 1, alpha: 1)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func colorChanged(sender: UISlider) {
view.backgroundColor = UIColor(hue: CGFloat(sender.value), saturation: 1, brightness: 1, alpha: 1)
}
}