【问题标题】:Use slider to pick a color for view's background使用滑块为视图的背景选择颜色
【发布时间】:2015-11-10 15:32:36
【问题描述】:

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

滑块应该呈现所有彩虹色,并且当用户滑动它时,查看背景会根据它发生变化。

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

@IBOutlet 变量滑块: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
        }
    }
}

【问题讨论】:

    标签: ios swift colors background uislider


    【解决方案1】:

    在这里有一个循环是没有意义的。您的代码忽略滑块值并始终通过循环,最后将颜色设置为 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。

    【讨论】:

    • 谢谢,但这实际上不起作用 - 由于它们的类型,我不能乘以 slider.value 和 increment。对不起,如果我的问题很愚蠢,最近开始这样做了。
    • 我的错,我没有测试它。立即尝试。
    • 仅供参考,它对我有用,只是颜色从红色变为橙色。现在没时间修。转换中可能出现问题(slider.value * increment)。几个小时后我回家后会发布工作代码。
    • 它有效 :) 太棒了!非常感谢!我知道是这样的:p
    【解决方案2】:

    试试这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多