Color del texto del título UIButton

Respuestas:

438

utilizar

C objetivo

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

Rápido

headingButton.setTitleColor(.black, for: .normal)
Amit Singh
fuente
2
esto funciona. pero el código en la pregunta original también a menudo funciona. Alguien sabe por qué el título solo a veces no responde al código de la pregunta?
crgt
77
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 de titleLabel para que coincida con la configuración interna que el botón tiene para ese estado.
psycotica0
1
la documentación de apple establece lo siguiente: "No use el objeto de etiqueta para establecer el color del texto o el color de la sombra. En su lugar, use setTitleColor: forState: y setTitleShadowColor: forState: métodos de esta clase para hacer esos cambios". Sin embargo, no hay una explicación real del "por qué".
clauswey
MÁS IMPORTANTE cuando configura un color para UIControlStateNormal, no es necesario configurarlo para todos los demás estados (si desea que su botón se vea igual al presionarlo).
drpawelo
cómo cambiar el color del texto del botón globalmente en la aplicación delegada. Tal vez usando UIButton.appearance (). SetTitleColor?
Awais Fayyaz
5

Creé una clase personalizada MyButton extendida desde UIButton. Luego agregó esto dentro de Identity Inspector:

ingrese la descripción de la imagen aquí

Después de esto, cambie el tipo de botón a Personalizado :

ingrese la descripción de la imagen aquí

Luego puede establecer atributos como textColory UIFontpara su UIButtonpara los diferentes estados:

ingrese la descripción de la imagen aquí

Luego también creé dos métodos dentro de la MyButtonclase a los que tengo que llamar dentro de mi código cuando quiero UIButtonque se muestre como resaltado:

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

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

Debe establecer el valor titleColornormal, resaltado y seleccionado UIControlStateporque puede haber más de un estado a la vez de acuerdo con la documentación de UIControlState. Si no crea estos métodos, UIButtonmostrará la selección o el resaltado, pero no se mantendrán en la UIColorconfiguración dentro de UIInterface Builderporque están disponibles para una breve presentación de una selección, no para mostrar la selección en sí.

Alex Cio
fuente
¿No debería usar el último fragmento de código en |lugar de &?
130e13a
5

En Swift:

Cambiar el color del texto de la etiqueta es bastante diferente a cambiarlo por a UIButton. Para cambiar el color del texto para un UIButtonuso de 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)
Chaudhary prasante
fuente
0

versión rápida 5:

Al usar el color incorporado predeterminado:

  1. button.setTitleColor(UIColor.green, for: .normal)

O

Puede usar su color personalizado utilizando el método RGB:

  1. button.setTitleColor(UIColor(displayP3Red: 0.0/255.0, green: 180.0/255.0, blue: 2.0/255.0, alpha: 1.0), for: .normal)
NickCoder
fuente