要釋義 - 您不能更改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)。
您是否設置了按鈕的框架? – ms83