以编程方式创建UI按钮:objective-c

时间:2011-09-13 19:37:32

标签: iphone objective-c ios xcode

我已经以编程方式向我的视图添加了按钮,我想稍后更改其背景颜色。按钮是自定义类型。以下代码无效。

    for(UIView *v in [self.view subviews]){
        if ([v isKindOfClass:[UIButton class]]){ 
            //NSLog(@"View : %@", v);
            [v setBackgroundColor:[UIColor redColor]];
        } 
    }

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

要解释 - 您无法更改UIButton的颜色(使用UIButtonTypeRoundedRect)。当您尝试更改它的背景颜色时,您更改的是绘制按钮的矩形颜色(通常很清楚)。所以有两种方法可以去。您可以将UIButton子类化并覆盖其-drawRect:方法,也可以为不同的按钮状态创建图像(这样做非常好)。

如果您使用IB设置背景图像,您会注意到IB不支持为按钮可以拥有的所有状态设置图像,因此我建议使用代码设置图像 -

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled];
[button setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted];
[button setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)];

最后一行显示如何为所选&突出显示的状态(这是IB无法设置的状态)。如果按钮不需要选择状态,则不需要选择的图像(第4行和第6行)。