Полагаю, вы говорите о кнопке UIB с UIButtonTypeRoundedRect
?
Вы не можете изменить цвет фона этого. Когда вы пытаетесь изменить его цвет фона, вы скорее меняете цвет прямоугольника, на котором нарисована кнопка (что обычно ясно).
Так что есть два пути. Либо вы создаете подкласс UIButton и перезаписываете его метод -drawRect:
, либо вы создаете изображения для различных состояний кнопок (что совершенно нормально).
Если вы устанавливаете фоновые изображения в Интерфейсном Разработчике, вы должны заметить, что IB не поддерживает установку изображений для всех состояний, которые может иметь кнопка, поэтому я рекомендую устанавливать изображения в коде следующим образом:
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)];
Последняя строка показывает, как установить изображение для выбранного и выделенного состояния (это то, что IB не может установить).
Вам не нужны выбранные изображения (строки 4 и 6), если ваша кнопка не нуждается в выбранном состоянии.