2011-09-13 59 views
0

我以編程方式將按鈕添加到了我的視圖中,並且稍後想更改其背景顏色。這些按鈕是自定義類型的。以下代碼不起作用。訪問以編程方式創建的UI按鈕:objective-c

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

有人請協助嗎?

+0

您是否設置了按鈕的框架? – ms83

回答

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)。

相關問題