UIButton-Titeltextfarbe

Antworten:

438

verwenden

Ziel c

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

Schnell

headingButton.setTitleColor(.black, for: .normal)
Amit Singh
quelle
2
das funktioniert. Aber der Code in der ursprünglichen Frage funktioniert auch oft. Weiß jemand, warum der Titel nur manchmal nicht auf den Code in der Frage reagiert?
Crgt
7
Der Grund dafür ist, dass der Code in der Schaltfläche die Eigenschaften von titleLabel zurücksetzt, wenn die Schaltfläche angeklickt wird oder auf andere Weise den Status ändert, um den internen Einstellungen der Schaltfläche für diesen Status zu entsprechen.
Psycotica0
1
In der Dokumentation von Apple heißt es: "Verwenden Sie das Beschriftungsobjekt nicht zum Festlegen der Textfarbe oder der Schattenfarbe. Verwenden Sie stattdessen die Methoden setTitleColor: forState: und setTitleShadowColor: forState: dieser Klasse, um diese Änderungen vorzunehmen." Keine wirkliche Erklärung für das "Warum".
Clauswey
WICHTIGSTES: Wenn Sie eine Farbe für UIControlStateNormal festlegen, müssen Sie diese nicht für alle anderen Status festlegen (wenn Ihre Schaltfläche beim Drücken gleich aussehen soll).
Drpawelo
So ändern Sie die Textfarbe von Schaltflächen global in App Delegate. Vielleicht mit UIButton.appearance (). SetTitleColor?
Awais Fayyaz
5

Ich habe eine benutzerdefinierte Klasse MyButton erstellt, die von erweitert wurde UIButton. Dann fügte dies hinzu in Identity Inspector:

Geben Sie hier die Bildbeschreibung ein

Ändern Sie danach den Schaltflächentyp in Benutzerdefiniert :

Geben Sie hier die Bildbeschreibung ein

Dann können Sie Attribute wie textColorund UIFontfür Ihre UIButtonfür die verschiedenen Zustände festlegen :

Geben Sie hier die Bildbeschreibung ein

Dann habe ich auch zwei Methoden innerhalb der MyButtonKlasse erstellt, die ich in meinem Code aufrufen muss, wenn eine UIButtonals hervorgehoben angezeigt werden soll:

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

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

Sie müssen den Wert titleColorfür Normal, Hervorheben und Auswählen festlegen , UIControlStateda gemäß der Dokumentation von mehr als ein Status gleichzeitig vorhanden sein kann UIControlState. Wenn Sie diese Methoden nicht erstellen, UIButtonwird die Auswahl oder Hervorhebung angezeigt, sie verbleiben jedoch nicht in der von UIColorIhnen eingerichteten Methode, UIInterface Builderda sie nur für eine kurze Anzeige einer Auswahl verfügbar sind und nicht für die Anzeige der Auswahl selbst.

Alex Cio
quelle
Sollte nicht das letzte Code-Snippet |anstelle von verwendet werden &?
130e13a
5

In Swift:

Das Ändern der Beschriftungstextfarbe unterscheidet sich erheblich vom Ändern der Farbe für a UIButton. So ändern Sie die Textfarbe für eine UIButtonVerwendung dieser Methode:

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

schnelle 5 Version:

Mit der eingebauten Standardfarbe:

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

ODER

Sie können Ihre benutzerdefinierte Farbe mithilfe der RGB-Methode verwenden:

  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
quelle