2011-07-15 18 views
144

Soy la creación de color del texto para UIButtontítulo UIButton color del texto

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                green:71/255.0 
                 blue:113/255.0 
                alpha:1.0]; 

No es el cambio de color mismo código que estoy usando en otro código que está funcionando.

+0

posible duplicado de [? Cómo se puede cambiar el color del título UIButton] (http://stackoverflow.com/questions/2474289/how-can-i- change-uibutton-title-color) – silentBeep

Respuesta

385

uso

Objective-C

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal]; 

Swift

headingButton.setTitleColor(.black, for: .normal) 
+1

esto funciona. pero el código en la pregunta original también suele funcionar. ¿Alguien sabe por qué el título solo algunas veces no responde al código en la pregunta? – crgt

+6

La razón es que cuando se hace clic en el botón o cambia de estado, el código en el botón restablece las propiedades del Título etiqueta para que coincida con la configuración interna que el botón tiene para ese estado. – psycotica0

+1

la documentación de apple indica lo siguiente: "No use el objeto label para establecer el color del texto o el color de la sombra. En su lugar, use los métodos setTitleColor: forState: y setTitleShadowColor: forState: de esta clase para realizar esos cambios."Sin embargo, ninguna explicación real del" por qué " – clauswey

3

he creado una clase personalizada MiBoton se extendía desde UIButton. Entonces añadido este dentro de la Identity Inspector:

enter image description here

Después de esto, cambiar el tipo de botón para personalizada:

enter image description here

entonces se puede establecer atributos como textColor y UIFont para su UIButton de los diferentes estados:

enter image description here

Entonces también creó dos métodos dentro MyButton clase que tengo que llamar dentro de mi código cuando quiero una UIButton que se mostrará como se destaca:

- (void)changeColorAsUnselection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorGreyDark] 
       forState:UIControlStateNormal & 
         UIControlStateSelected & 
         UIControlStateHighlighted]; 
} 

- (void)changeColorAsSelection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorYellow] 
       forState:UIControlStateNormal & 
         UIControlStateHighlighted & 
         UIControlStateSelected]; 
} 

Usted tiene que fijar el titleColor de lo normal, lo más destacado y seleccionó UIControlState porque puede haber más de un estado a la vez según la documentación de UIControlState. Si no crea estos métodos, el UIButton mostrará la selección o el resaltado, pero no permanecerán en el UIColor que configuró dentro de UIInterface Builder porque solo están disponibles para una breve visualización de una selección, no para mostrar la selección.

3

En Swift:

Cambio del color del texto de la etiqueta es bastante diferente de cambiarlo por un UIButton. Para cambiar el color del texto para un uso UIButton este método:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal) 
Cuestiones relacionadas