Tôi giả sử bạn đang nói về UIButton với UIButtonTypeRoundedRect
? Bạn không thể thay đổi màu nền của nó. Khi bạn thử thay đổi màu nền của nó, bạn muốn thay đổi màu của hình chữ nhật mà nút được vẽ (thường rõ ràng). Vì vậy, có hai cách để đi. Hoặc bạn phân lớp UIButton và ghi đè lên -drawRect:
phương thức của nó hoặc bạn tạo hình ảnh cho các trạng thái nút khác nhau (điều này hoàn toàn tốt để làm).
Nếu bạn đặt hình ảnh nền trong Trình tạo giao diện, bạn nên lưu ý rằng IB không hỗ trợ thiết lập hình ảnh cho tất cả các trạng thái mà nút có thể có, vì vậy tôi khuyên bạn nên đặt hình ảnh trong mã như sau:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled];
[myButton setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
[myButton setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted];
[myButton setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)];
Dòng cuối cùng cho biết cách đặt hình ảnh cho trạng thái đã chọn & đánh dấu (đó là điều IB không thể đặt). Bạn không cần các hình ảnh đã chọn (dòng 4 & 6) nếu nút của bạn không cần trạng thái đã chọn.