Ios 如何在swift中比较颜色
我想改变不同状态的按钮背景。 我尝试这样做:Ios 如何在swift中比较颜色,ios,swift,Ios,Swift,我想改变不同状态的按钮背景。 我尝试这样做: @IBAction func addToShedulerAction(sender: UIButton) { println(sender.backgroundColor) if sender.backgroundColor==UIColor.redColor(){ sender.backgroundColor==UIColor.whiteColor() }
@IBAction func addToShedulerAction(sender: UIButton) {
println(sender.backgroundColor)
if sender.backgroundColor==UIColor.redColor(){
sender.backgroundColor==UIColor.whiteColor()
}
else //if sender.backgroundColor==UIColor.whiteColor()
{
sender.backgroundColor=UIColor.redColor()
}
}
但是,在第一个按钮println print nil和背景更改为红色时,在第二个按钮println print“可选(UIDeviceRGBColorSpace 1 0 1)”和颜色不变时,您在第一个
if
子句中有一个错误。应该是:
if sender.backgroundColor.isEqual(UIColor.redColor()){
sender.backgroundColor=UIColor.whiteColor // only one '=' here
}
sender.backgroundColor = UIColor.whiteColor()
您的第一个
if
子句中有一个错误。应该是:
if sender.backgroundColor.isEqual(UIColor.redColor()){
sender.backgroundColor=UIColor.whiteColor // only one '=' here
}
sender.backgroundColor = UIColor.whiteColor()
您不能使用
=
操作符比较颜色。你这样做,你需要代码>要展开可选颜色,请执行以下操作:
if sender.backgroundColor!.isEqual(UIColor.redColor()) {
}
另外,删除赋值语句中的无关=
。应该是:
if sender.backgroundColor.isEqual(UIColor.redColor()){
sender.backgroundColor=UIColor.whiteColor // only one '=' here
}
sender.backgroundColor = UIColor.whiteColor()
您不能使用=
操作符比较颜色。你这样做,你需要代码>要展开可选颜色,请执行以下操作:
if sender.backgroundColor!.isEqual(UIColor.redColor()) {
}
另外,删除赋值语句中的无关=
。应该是:
if sender.backgroundColor.isEqual(UIColor.redColor()){
sender.backgroundColor=UIColor.whiteColor // only one '=' here
}
sender.backgroundColor = UIColor.whiteColor()
以前的答案是错误的
原因
返回false
将此代码添加到项目中(Swift 4)
所以现在
UIColor.black == UIColor(red: 0, green: 0, blue: 0, alpha: 1)
返回true
对你来说:
if sender.backgroundColor == .red {
sender.backgroundColor = .white
} else {
sender.backgroundColor = .red
}
现在您的代码看起来很漂亮:)前面的答案是错误的
原因
返回false
将此代码添加到项目中(Swift 4)
所以现在
UIColor.black == UIColor(red: 0, green: 0, blue: 0, alpha: 1)
返回true
对你来说:
if sender.backgroundColor == .red {
sender.backgroundColor = .white
} else {
sender.backgroundColor = .red
}
现在,您的代码看起来很漂亮:)记住,当您比较UIColors时,您必须在颜色的末尾为两边写描述,如果您不写这个,每次它都会进入else块。例如,请参见下面的代码
if(ocularPlus1Btn.backgroundColor?.description == UIColor.init(red: 23.0 / 255.0, green: 82 / 255.0, blue: 84 / 255.0, alpha: 1).description) {
return "positive"
} else {
return "negative"
}
记住当您比较UIColors时,您必须在两边的颜色末尾写下描述,如果您不写,每次它都会进入else块。例如,请参见下面的代码
if(ocularPlus1Btn.backgroundColor?.description == UIColor.init(red: 23.0 / 255.0, green: 82 / 255.0, blue: 84 / 255.0, alpha: 1).description) {
return "positive"
} else {
return "negative"
}
这不是比较UIColors的方式。这不是比较UIColors的方式。看看这个问题:看看这个问题:比较CGfloat和==不是一个好主意。在浮点值中,最好使用不等式或带阈值的减法(delta)。请注意,这只会改变==
的行为,而不会改变=代码>,因此您需要实现=代码>,或者记住始终使用!(color1==color2)
而不是color1!=color2
比较CGfloat和==不是一个好主意。在浮点值中,最好使用不等式或带阈值的减法(delta)。请注意,这只会改变==
的行为,而不会改变=代码>,因此您需要实现=代码>,或者记住始终使用!(color1==color2)
而不是color1!=颜色2