Supongo que estás hablando de un UIButton con UIButtonTypeRoundedRect
? No puedes cambiar el color de fondo de eso. Cuando intentas cambiar su color de fondo, estás cambiando el color del rectángulo en el que se dibuja el botón (que generalmente es claro). Así que hay dos caminos a seguir. O subclasifica UIButton y sobrescribe su -drawRect:
método o crea imágenes para los diferentes estados de los botones (lo cual está perfectamente bien).
Si configura las imágenes de fondo en Interface Builder, debería notar que IB no admite la configuración de imágenes para todos los estados que puede tener el botón, por lo que recomiendo configurar las imágenes en un código como este:
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)];
La última línea muestra cómo configurar una imagen para el estado seleccionado y resaltado (ese es el que IB no puede configurar). No necesita las imágenes seleccionadas (líneas 4 y 6) si su botón no necesita un estado seleccionado.