Ios 以编程方式更改自定义UiButton背景色

Ios 以编程方式更改自定义UiButton背景色,ios,objective-c,uibutton,Ios,Objective C,Uibutton,在名为“ComingHomeButton”的自定义UIButton类中,我无法更改背景颜色 我想在不创建图像的情况下更改它,但如果这是唯一的方法,我将不得不这样做 我还想在每次点击按钮时更改背景色 以下是我所拥有的不起作用的东西: UIColor *color = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5]; [self setBackgroundColor:color]; self指的是我的“回家按钮” 非常感谢:-) 下面的代码可以很

在名为“ComingHomeButton”的自定义
UIButton
类中,我无法更改背景颜色

我想在不创建图像的情况下更改它,但如果这是唯一的方法,我将不得不这样做

我还想在每次点击按钮时更改背景色

以下是我所拥有的不起作用的东西:

UIColor *color = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5];
[self setBackgroundColor:color];
self指的是我的“回家按钮”

非常感谢:-)


下面的代码可以很好地将按钮添加到具有背景按钮的给定视图中。尝试使用点符号而不是消息传递。

您可以创建一个计数器,然后在点击按钮时循环颜色:

-(IBAction)buttonTapped:(id)sender {
    if (!counter) {
    counter = 0
    }
    if (counter%3 == 0) {
    self.backgroundColor = [UIColor redColor]; //or whatever custom color you want to use
    } else if (counter%3 == 1) {
    self.backgroundColor = [UIColor blueColor];
    } else if (counter%3 == 2) {
    self.backgroundColor = [UIColor greenColor];
    }
    counter++
}
你可以添加任意多的颜色来循环。%表示mod函数,确保当计数器大于2时,它仍将返回一个介于0和2之间的数字

%后面的数字是要循环的颜色数

-(IBAction)buttonTapped:(id)sender {
    sender.backgroundColor = [self randomColor];

}

-(UIColor *)randomColor
{
    CGFloat red = arc4random() % 255 / 255.0;
    CGFloat green= arc4random() % 255 / 255.0;
    CGFloat blue= arc4random() % 255 / 255.0;
    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

    return color;
}

我没有测试我不在mac电脑上的代码,但它应该可以工作。

Checkout UIButton controlstate。您可以为各种不同的UIButonControlState设置背景。看看这个被接受的答案,它可能就是你想要的答案!点击按钮后,我希望颜色保持不变:-(RGB组合映射为纯白色…尝试使用一些小数点;例如“
colorWithRed:(255.0f/255.0f)green:(0.0f/255.0f)blue:(125.0f/255.0f)alpha:0.5
”他不想创建新按钮!
-(IBAction)buttonTapped:(id)sender {
    sender.backgroundColor = [self randomColor];

}

-(UIColor *)randomColor
{
    CGFloat red = arc4random() % 255 / 255.0;
    CGFloat green= arc4random() % 255 / 255.0;
    CGFloat blue= arc4random() % 255 / 255.0;
    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

    return color;
}