为什么我的开关没有改变视图的颜色?

时间:2018-04-22 04:11:09

标签: swift

这是我第一篇关于堆叠溢出的帖子,希望不是我的最后一篇,考虑提问只会让你更聪明!

基本上,我来到了一个残障。在我的代码中,我有一个UIView,我试图改变开关的颜色。在我的viewDidLoad()方法中,我将它默认为黑色背景。当我翻转开关时,我希望能够调用我的updateColor()方法,但我不确定如何执行此操作。我将在下面发表我的课程。

func updateColor() {

    var red: CGFloat = 0
    var green: CGFloat = 0
    var blue: CGFloat = 0

    if redSwitch.isOn {
        red = 1
    }
    if greenSwitch.isOn {
        green = 1
    }
    if blueSwitch.isOn {
        blue = 1
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    coilorView.backgroundColor = .black
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBOutlet weak var coilorView: UIView!
@IBOutlet weak var redSwitch: UISwitch!
@IBOutlet weak var greenSwitch: UISwitch!
@IBOutlet weak var blueSwitch: UISwitch!
@IBAction func switchChanged(_ sender: UISwitch) {
    if sender.isOn {

    }else{
        return coilorView.backgroundColor = .black
    }

任何帮助将不胜感激!同样,我的最终目标是让我的开关能够改变视图的颜色。

-Jason (初级)

2 个答案:

答案 0 :(得分:0)

@IBAction func switchChanged(_ sender: UISwitch) {
    coilorView.backgroundColor = updateColor()
}


func updateColor() -> UIColor {
    return UIColor(red: redSwitch.isOn ? 1 : 0, green: greenSwitch.isOn ? 1 : 0, blue: blueSwitch.isOn ? 1 : 0, alpha: 1)
}

您只需要创建updateColor函数并返回要在switchChanged中使用的颜色。

说实话,你甚至不需要updateColor。你也可以这样做:

@IBAction func switchChanged(_ sender: UISwitch) {
    coilorView.backgroundColor = UIColor(red: redSwitch.isOn ? 1 : 0, green: greenSwitch.isOn ? 1 : 0, blue: blueSwitch.isOn ? 1 : 0, alpha: 1)
}

如果您坚持使用我上面定义的updateColor函数,您还应该使用它来设置viewDidLoad中的默认黑色

答案 1 :(得分:-2)

// modify the function to this , which returns the updated color after the conditions 

func updateColor() -> UIColor  {

var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0

if redSwitch.isOn {
    red = 1
}
if greenSwitch.isOn {
    green = 1
}
if blueSwitch.isOn {
    blue = 1
}
let updatedColor = UIColor(red: red, green: green, blue: blue, alpha: 1.0)
return updatedColor
}

//Now you may call this function.
@IBAction func switchChanged(_ sender: UISwitch) {
   coilorView.backgroundColor = updateColor()
}