这是我第一篇关于堆叠溢出的帖子,希望不是我的最后一篇,考虑提问只会让你更聪明!
基本上,我来到了一个残障。在我的代码中,我有一个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 (初级)
答案 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()
}