Couleur du texte du titre UIButton

Réponses:

438

utilisation

Objectif c

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

Rapide

headingButton.setTitleColor(.black, for: .normal)
Amit Singh
la source
2
cela marche. mais le code de la question originale fonctionne aussi souvent. quelqu'un sait pourquoi le titre ne répond que parfois au code de la question?
crgt
7
La raison en est que lorsque l'utilisateur clique sur le bouton ou qu'il change d'état, le code du bouton réinitialise les propriétés de titleLabel pour qu'elles correspondent aux paramètres internes du bouton pour cet état.
psycotica0
1
la documentation d'Apple indique ce qui suit: "N'utilisez pas l'objet label pour définir la couleur du texte ou la couleur de l'ombre. Utilisez plutôt les méthodes setTitleColor: forState: et setTitleShadowColor: forState: de cette classe pour effectuer ces modifications." Aucune explication réelle du «pourquoi» cependant.
clauswey
Plus important encore, lorsque vous définissez une couleur pour UIControlStateNormal, il n'est pas nécessaire de le définir pour tous les autres états (si vous souhaitez que votre bouton ait le même aspect lorsqu'il est enfoncé).
drpawelo
comment changer la couleur du texte du bouton globalement dans le délégué d'application. Peut-être utiliser UIButton.appearance (). SetTitleColor?
Awais Fayyaz
5

J'ai créé une classe personnalisée MyButton étendue à partir de UIButton. Puis ajouté ceci à l'intérieur du Identity Inspector:

entrez la description de l'image ici

Après cela, changez le type de bouton en Personnalisé :

entrez la description de l'image ici

Ensuite, vous pouvez définir des attributs comme textColoret UIFontpour votre UIButtonpour les différents états:

entrez la description de l'image ici

Ensuite, j'ai également créé deux méthodes à l'intérieur de la MyButtonclasse que je dois appeler à l'intérieur de mon code lorsque je veux que un UIButtonsoit affiché en surbrillance:

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

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

Vous devez définir le titleColorpour normal, surligner et sélectionné UIControlStatecar il peut y avoir plus d'un état à la fois selon la documentation de UIControlState. Si vous ne créez pas ces méthodes, UIButtonaffichera la sélection ou la mise en surbrillance, mais elles ne resteront pas dans la UIColorconfiguration que vous avez définie dans le UIInterface Buildercar elles ne sont disponibles que pour un bref affichage d'une sélection, pas pour afficher la sélection elle-même.

Alex Cio
la source
Le dernier extrait de code ne devrait-il pas être utilisé à la |place de &?
130e13a
5

Dans Swift:

Changer la couleur du texte de l'étiquette est assez différent de le changer pour un UIButton. Pour changer la couleur du texte pour une, UIButtonutilisez cette méthode:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal)
Prashant Chaudhary
la source
0

version swift 5:

En utilisant la couleur intégrée par défaut:

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

OU

Vous pouvez utiliser votre couleur personnalisée en utilisant la méthode RVB:

  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
la source