使用RGB更改按钮背景颜色

时间:2015-09-02 21:24:40

标签: if-statement xcode6 rgb uicolor

我确信这将是一个简单而明显的修复,但我不明白为什么会发生这种情况。

基本上我想编码一个按钮来改变它的背景颜色,这取决于当前的颜色。以下代码有效,但它使用xcode中的UI颜色。

var janela = window.open('https://www.sitepor500.com.br');

janela.onload = function () {
    setTimeout(function () {
        console.log(janela.document.documentElement.outerHTML)
    }, 2000);
}

现在如果我使用RGB颜色如下:

-(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);}

按钮只会从nil循环到琥珀色到nil等错过了else if语句。

非常感谢任何建议或帮助

1 个答案:

答案 0 :(得分:0)

您通过比较3组浮点数来尝试确定该按钮是否为特定颜色。

第二个if测试失败,因为你无法比较CGFloat的确切相等。

更简单的方法是对您的按钮进行子类化并添加一个BOOL属性,指示它是否"切换"或不。然后你可以检查属性,只需在一种颜色和下一种颜色之间进行更改。

假设您添加的属性称为绿色,它看起来像这样

@property (assign, getter=isGreen) BOOL green;

你可以更简洁地改变颜色

Button1.backgroundColor = [Button1 isGreen] ? [UIColor orangeColor] : [UIColor greenColor];
Button1.green = !Button1.green;

顺便说一句,命名约定表明一个类以大写字母开头,例如UIButton。实例变量以小写字母开头,例如button1