2011-01-22 26 views
7

Estoy modificando algunos cambios visuales y me di cuenta de que cuando intento establecer el color de fondo de un UIButton, solo establece el color fuera del botón real (no dentro el botón en sí)Cómo establecer el color de un UIButton adentro (no color de fondo)

UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(6, 9, 50, 25);  
[button setTitle:@"Select" forState:UIControlStateNormal]; 
button.backgroundColor = [UIColor redColor]; 

¿Existe otra propiedad que me permita establecer el color?

Respuesta

0

Uso setImage:forState:

- (void)setImage:(UIImage *)image forState:(UIControlState)state 

Además, no se olvide de crear un botón con [UIButton buttonWithType:UIButtonTypeCustom]

+0

por lo que debe utilizar una imagen w/este enfoque? ¿cómo podría obtener un solo color aquí? –

+0

Sí, necesitas una imagen. Puede pasar sin una imagen pero el botón tendrá esquinas cuadradas. Coreners cuadrados, llenos de un color y un título. Nada más. Para hacerlo: cree su botón como UIButtonTypeCustom y establezca su propiedad backgroundColor en cualquier color que necesite – tux91

+4

basura respuesta ... – yunas

11

colored UIButton

Si no va a querer usar las imágenes, y quiere que se vea exactamente igual el estilo Redondeado Rect, intenta esto. Simplemente coloque un UIView sobre el UIButton, con un cuadro idéntico y máscara de cambio de tamaño automático, establezca el alfa en 0.3 y configure el fondo en un color. A continuación, utilice el fragmento siguiente para recortar los bordes redondeados de la vista de superposición de color. Además, desmarque la casilla de verificación 'Interacción del usuario habilitada' en IB en UIView para permitir que los eventos táctiles entren en cascada al UIButton que se encuentra debajo.

Un efecto lateral es que el texto también se coloreará.

#import <QuartzCore/QuartzCore.h> 

colorizeOverlayView.layer.cornerRadius = 10.0f; 
colorizeOverlayView.layer.masksToBounds = YES; 
+0

Se supone que esta es la respuesta correcta en lugar de usar una imagen ... – yunas

+1

También puede hacerlo a la capa. corderRadius al botón mismo (use UIButtonTypeCustom y establezca la propiedad backgroundColor – jopke

2

Acabo de descubrir una solución que funciona a la perfección, y no tengo idea de por qué.

Si selecciona el botón en el Creador de interfaces y abre el "inspector de identidad", puede agregar "Atributos de tiempo de ejecución definidos por el usuario". Si agrega una clave de "self.fillColor", con un tipo de color, ese color se utiliza como color de relleno para el botón.

Descubrí esto puramente por accidente. Tuve una subclase personalizada de UIButton llamada ColoredButton donde dibujé el rectángulo redondeado y lo llené yo mismo. Usó una propiedad fillColor. Cambié uno de mis objetos de ColorButton a UIButton para probar algo, y me sorprendí al encontrar que todavía estaba lleno de un color.

No sé por qué funciona, pero lo hace.

3

Para Xamarin

var addNote = new UIButton(UIButtonType.Custom); 
     //addNote.SetImage(new UIImage("Images/11-x.png"), UIControlState.Normal); 
     addNote.SetTitle("Add Note", UIControlState.Normal); 
     addNote.Frame = new RectangleF(0, 0, 130, 30); 
     addNote.SetTitleColor(UIColor.Blue, UIControlState.Normal); 
     addNote.BackgroundColor = UIColor.LightGray; 
     addNote.Layer.CornerRadius = 10f; 
     addNote.Layer.BorderColor = new MonoTouch.CoreGraphics.CGColor(0f, 100f, 0f); 
     addNote.Layer.BorderWidth = 2f; 
     addNote.TouchUpInside += delegate 
     { 
      AddNote(); 
     }; 
+0

Supongo que hay muchas macros ... 'SetTitleColor (UIColor.Blue, UIControlState.Normal)' no funciona para mí. – jerik

Cuestiones relacionadas