If statement 使用RGB更改按钮背景颜色
我相信这将是一个简单而明显的解决办法,但我不明白为什么会发生这种情况 基本上我想编码一个按钮来改变它的背景颜色,这取决于当前的颜色。下面的代码可以工作,但它在xcode中使用了UI颜色If statement 使用RGB更改按钮背景颜色,if-statement,xcode6,rgb,uicolor,If Statement,Xcode6,Rgb,Uicolor,我相信这将是一个简单而明显的解决办法,但我不明白为什么会发生这种情况 基本上我想编码一个按钮来改变它的背景颜色,这取决于当前的颜色。下面的代码可以工作,但它在xcode中使用了UI颜色 -(IBAction)Button1Colour:(id)sender{ if (_Button1.backgroundColor == nil) { _Button1.backgroundColor = [UIColor orangeColor];} else if (_Button1.backgr
-(IBAction)Button1Colour:(id)sender{
if (_Button1.backgroundColor == nil) {
_Button1.backgroundColor = [UIColor orangeColor];}
else if (_Button1.backgroundColor == [UIColor orangeColor]) {
_Button1.backgroundColor = [UIColor greenColor];}
else (_Button1.backgroundColor = nil);}
现在,如果我使用RGB颜色,如下所示:
-(IBAction)Button1Colour:(id)sender{
if (_Button1.backgroundColor == nil) {
_Button1.backgroundColor = [UIColor colorWithRed:(216/255.f) green:(146/255.f) blue:(48/255.f) alpha:0.3];}
else if (_Button1.backgroundColor == [UIColor colorWithRed:(216/255.f) green:(146/255.f) blue:(48/255.f) alpha:0.3]) {
_Button1.backgroundColor = [UIColor colorWithRed:(33/255.f) green:(141/255.f) blue:(8/255.f) alpha:0.3];}
else (_Button1.backgroundColor = nil);}
该按钮将仅从nil循环至琥珀色循环至nil等,并忽略else if语句
如果您试图通过比较3组浮点数来确定按钮是否为特定颜色,请提供任何建议或帮助 第二个if测试失败,因为您无法比较
CGFloat
s是否精确相等
更简单的方法是对按钮进行子类化,并添加一个BOOL属性,指示它是否被“切换”。然后,您可以检查属性,只需在一种颜色和另一种颜色之间进行更改
假设您添加的属性名为绿色,它将如下所示
@property (assign, getter=isGreen) BOOL green;
你可以这样更简洁地改变颜色
Button1.backgroundColor = [Button1 isGreen] ? [UIColor orangeColor] : [UIColor greenColor];
Button1.green = !Button1.green;
另外,命名约定建议类以大写字母开头,例如,
UIButton
。实例变量以小写字母开头,例如,button1
您试图通过比较3组浮点数来确定按钮是否为特定颜色
第二个if测试失败,因为您无法比较CGFloat
s是否精确相等
更简单的方法是对按钮进行子类化,并添加一个BOOL属性,指示它是否被“切换”。然后,您可以检查属性,只需在一种颜色和另一种颜色之间进行更改
假设您添加的属性名为绿色,它将如下所示
@property (assign, getter=isGreen) BOOL green;
你可以这样更简洁地改变颜色
Button1.backgroundColor = [Button1 isGreen] ? [UIColor orangeColor] : [UIColor greenColor];
Button1.green = !Button1.green;
另外,命名约定建议类以大写字母开头,例如,
UIButton
。实例变量以小写字母开头,例如,button1
是否有条件进行计算?是否有条件进行计算?