Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中比较颜色_Ios_Swift - Fatal编程技术网

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