创建后更改UI按钮颜色

时间:2011-09-13 18:27:52

标签: iphone objective-c ios xcode

我创建了一系列按钮并将它们添加到视图中,我希望能够以某种方式访问​​这些按钮并改变它们的外观。

这是我尝试过的两个版本的代码,而我确信它找到了正确的按钮,似乎没有发生任何背景颜色。

  for(UIView *v in [self.view subviews]) {
        if ([v isKindOfClass:[UIButton class]]) {
            if (buttonTag == [v tag]) {
                v.backgroundColor = [UIColor redColor];
            }
        }
    }

 for (int i = 0; i < [[self.view subviews] count]; i++) {
        if ([[self.view.subviews objectAtIndex:i] class] == [UIButton class]) {
            NSLog(@"Tags : %i", [[self.view.subviews objectAtIndex:i] tag]);
            if (buttonTag == [[self.view.subviews objectAtIndex:i] tag]) {

                [[self.view.subviews objectAtIndex:i] setBackgroundColor:[UIColor redColor]];
            }
        }
    }

感谢。

2 个答案:

答案 0 :(得分:0)

我可以说你的第一个代码版本适用于我,只要buttonTag的值是正确的。

要进行调试,我建议您注释掉buttonTag比较,然后将所有按钮变为红色。

可能是您的按钮不在UIView层次结构的顶层。它可以嵌入在子视图中。如果是这样,您可以将循环放入递归函数中。

或者,可能是您的UIButton backgroundColor变为红色,而您却看不到它。圆角矩形按钮的内部将保持白色;只有圆角以外的区域才会显示红色。带有背景图像的按钮也可能覆盖任何红色。

答案 1 :(得分:0)

您可以使用:

  1. 您可以设置所选属性,例如

    if(myButtton.selected = YES) {  myButton.backgroundColor = [UIColor redColor]; } 此外,突出显示的属性可用作myBUtton.highlighted = YES;

  2. OR

    1. 您可以按如下方式设置背景图片或背景颜色:  [myButton setBackgroundImage:[UIImage imagedNamed:strechableImage] forState:UIControlStateTouchUpInside];

      或正常状态如下:  [myButton setBackgroundImage:[UIImage imagedNamed:strechableImage] forState:UIControlStateNormal];