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