Colore del testo del titolo UIButton


Risposte:


438

uso

Objective-C

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

veloce

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

2
questo funziona. ma anche il codice nella domanda originale spesso funziona. qualcuno sa perché il titolo a volte non riesce a rispondere al codice nella domanda?
Crgt

7
Il motivo è che quando si fa clic sul pulsante o cambia in altro modo lo stato, il codice nel pulsante ripristina le proprietà del titleLabel in modo che corrispondano alle impostazioni interne del pulsante per quello stato.
psycotica0,

1
la documentazione di apple afferma quanto segue: "Non utilizzare l'oggetto etichetta per impostare il colore del testo o il colore dell'ombra. Invece, utilizzare setTitleColor: forState: e setTitleShadowColor: forState: metodi di questa classe per apportare tali modifiche." Nessuna vera spiegazione del "perché" però.
Clauswey il

MOLTO IMPORTANTE quando si imposta un colore per UIControlStateNormal, non è necessario impostarlo per tutti gli altri stati (se si desidera che il pulsante appaia uguale quando viene premuto).
drpawelo,

come cambiare il colore del testo del pulsante a livello globale nel delegato dell'app. Forse usando UIButton.appearance (). SetTitleColor?
Awais Fayyaz,

5

Ho creato una classe personalizzata MyButton estesa da UIButton. Quindi aggiunto questo all'interno di Identity Inspector:

inserisci qui la descrizione dell'immagine

Successivamente, modifica il tipo di pulsante in Personalizzato :

inserisci qui la descrizione dell'immagine

Quindi puoi impostare attributi come textColore UIFontper i tuoi UIButtonper i diversi stati:

inserisci qui la descrizione dell'immagine

Quindi ho anche creato due metodi all'interno della MyButtonclasse che devo chiamare all'interno del mio codice quando voglio UIButtonche sia visualizzato come evidenziato:

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

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

Devi impostare titleColorsu normale, evidenziare e selezionato UIControlStateperché ci può essere più di uno stato alla volta secondo la documentazione di UIControlState. Se non crei questi metodi, UIButtonvisualizzeranno la selezione o l'evidenziazione ma non rimarranno nella UIColorconfigurazione impostata all'interno UIInterface Builderperché sono disponibili solo per una breve visualizzazione di una selezione, non per visualizzare la selezione stessa.


L'ultimo snippet di codice non dovrebbe essere utilizzato |invece di &?
130e13a,

5

In Swift:

Cambiare il colore del testo dell'etichetta è abbastanza diverso dal cambiarlo per a UIButton. Per modificare il colore del testo per UIButtonutilizzare questo metodo:

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

0

versione rapida 5:

Utilizzando il colore predefinito incorporato:

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

O

Puoi usare il tuo colore personalizzato usando il metodo 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.