Este me tiene perplejo.
¿Es posible cambiar el color de fondo de un UIButton en Cocoa para iPhone? Intenté configurar el color de fondo, pero solo cambia las esquinas. setBackgroundColor:
parece ser el único método disponible para tales cosas.
[random setBackgroundColor:[UIColor blueColor]];
[random.titleLabel setBackgroundColor:[UIColor blueColor]];
objective-c
iphone
cocoa-touch
uibutton
dubbeat
fuente
fuente
Respuestas:
Esto se puede hacer mediante programación haciendo una réplica:
editar: por supuesto, tendrías que
#import <QuartzCore/QuartzCore.h>
editar: para todos los lectores nuevos, también deben considerar algunas opciones agregadas como "otra posibilidad". para su consideración.
Como esta es una respuesta antigua, recomiendo encarecidamente leer los comentarios para solucionar problemas
fuente
Tengo un enfoque diferente,
Desde CommonUIUtility,
No te olvides de
#import <QuartzCore/QuartzCore.h>
fuente
btFind.layer.borderWidth = 1;
setBackgroundColor:(UIColor *) forState:(UIControlState)
.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:
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.
fuente
CGContextSetFillColorWithColor
yCGContextFillPath
para rellenar el camino dibujado porCGContextAddArcToPoint
.forState:(UIControlStateHighlighted | UIControlStateSelected)
Saludos.Otra posibilidad:
Sin embargo, el botón es cuadrado y eso no es lo que queremos. Cree un IBOutlet con una referencia a este botón y agregue lo siguiente al método viewDidLoad:
No olvide importar QuartzCore.h
fuente
Subclase UIButton y anular los métodos setHighlight y setSelected
Mi método darkerShade está en una categoría UIColor como esta
fuente
Si no desea utilizar imágenes y desea que se vea exactamente como el estilo Rect redondeado, intente esto. Simplemente coloque una UIView sobre el UIButton, con un marco idéntico y una máscara de cambio de tamaño automático, configure el alfa en 0.3 y configure el fondo en un color. Luego, use el fragmento de abajo para recortar los bordes redondeados de la vista de superposición de colores. Además, desmarque la casilla de verificación 'Interacción del usuario habilitada' en IB en UIView para permitir que los eventos táctiles caigan en cascada hasta el botón UIB debajo.
Un efecto secundario es que su texto también se coloreará.
fuente
Otra posibilidad (la mejor y más hermosa en mi humilde opinión):
Cree un UISegmentedControl con 2 segmentos en el color de fondo requerido en Interface Builder. Establezca el tipo en 'barra'. Luego, cámbielo para que tenga solo un segmento. El generador de interfaces no acepta un segmento, por lo que debe hacerlo mediante programación.
Por lo tanto, cree un IBOutlet para este botón y agréguelo a viewDidLoad de su vista:
Ahora tiene un hermoso botón de color brillante con el color de fondo especificado. Para las acciones, use el evento 'valor cambiado'.
(Encontré esto en http://chris-software.com/index.php/2009/05/13/creating-a-nice-glass-buttons/ ). Gracias Chris!
fuente
Bueno, estoy 99% seguro de que no puedes simplemente cambiar el color de fondo de un botón UIB. En su lugar, tienes que ir y cambiar las imágenes de fondo tú mismo, lo cual creo que es un fastidio. Me sorprende tener que hacer esto.
Si me equivoco o si hay una mejor manera sin tener que configurar imágenes de fondo, hágamelo saber.
fuente
Según la sugerencia de @EthanB y @karim haciendo un rectángulo relleno hacia atrás, acabo de crear una categoría para que el UIButton logre esto.
Simplemente ingrese el código de categoría: https://github.com/zmonteca/UIButton-PLColor
Uso:
Opcional para que los Estados lo utilicen:
fuente
También puede agregar un CALayer al botón; puede hacer muchas cosas con estos, incluida una superposición de color, este ejemplo usa una capa de color simple y también puede graduar fácilmente el color. Tenga en cuenta que las capas añadidas oscurecen las que están debajo
fuente
añadir un segundo objetivo para el
UIButton
paraUIControlEventTouched
y cambiar elUIButton
color de fondo. Luego cámbielo nuevamente en elUIControlEventTouchUpInside
objetivo;fuente
Para botones profesionales y atractivos, puede comprobar este componente de botón personalizado . Puede usarlo directamente en sus vistas y vistas de tabla o modificar el código fuente para adaptarlo a sus necesidades. Espero que esto ayude.
fuente
Esto no es tan elegante como subclasificar UIButton, sin embargo, si solo quieres algo rápido, lo que hice fue crear un botón personalizado, luego una imagen de 1 px por 1 px con el color que me gustaría que tuviera el botón y establecer el fondo del botón a esa imagen para el estado resaltado - funciona para mis necesidades.
fuente
Sé que esto se preguntó hace mucho tiempo y ahora hay un nuevo UIButtonTypeSystem. Pero las preguntas más nuevas se marcan como duplicados de esta pregunta, así que aquí está mi respuesta más nueva en el contexto de un botón del sistema iOS 7, use la
.tintColor
propiedad.fuente
[myButton setBackgroundColor:[UIColor blueColor]]; [myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
Es posible cambiar de esta manera o ir al Storyboard y cambiar el fondo en las opciones del lado derecho.
fuente
Swift 3:
fuente