2016-12-01 3 views
2

Ich versuche, den Text-Farbe eines UIButton programmatisch 3.Warum kann ich die UIButton Textfarbe nicht ändern?

Ich habe es auf Swift zu ändern, in anderen Tasten getan, aber es gibt nur einen in das gesamte Projekt, das ich nicht die Farbe ändern kann, und ich kann nicht finden, warum (Ich kann es manuell vom Storyboard ändern, aber ich muss seine Farbe programmgesteuert ändern). Um die Textfarbe in anderen Tasten zu ändern, habe ich Folgendes getan:

und es funktioniert gut. Außer einer UIButton, die ich in einem UITableViewCell habe, in dem ich die Textfarbe zu diesem UIButton programmatisch nicht ändern kann. Ich kann es manuell ändern (mit Storyboard), obwohl.

Dies ist der Code, den ich für die benutzerdefinierte UITableViewCell haben:

@IBOutlet weak var customButton: UIButton! 

override func awakeFromNib() { 
    super.awakeFromNib() 

    customButton.tintColor = UIColor.blue 
    customButton.backgroundColor = UIColor.yellow 
} 

aber es ändert sich nur die Hintergrundfarbe gelb.

Das ist meine Storyboard-Konfiguration (das weiß ich nicht, ob es für diesen Zweck relevant sein kann):

enter image description here

Ich weiß, dass die Verbindung zu diesen UIButton gut funktioniert, weil die Hintergrundfarbe ändert sich aber dann,

Warum kann ich nicht seine Textfarbe ändern? Fehle ich etwas?

Vielen Dank im Voraus!

Antwort

2

Ausgabe

Einstellung tintColor funktioniert nur für buttonType = .custom. Wenn Sie eine Schaltfläche mit UIButton() der Standard erstellen buttonType wäre .system, die Ihre globalen titleLabel und tintColor aufgrund Konfiguration außer Kraft gesetzt werden mit spezifischen states

Lösung

Wenn Sie das Verhalten des Systems wollen UIButton des titleLabel Verblassen, wenn Drücken Sie die Taste, müssen Sie wie unter den titleColor für jeden Zustand setzen:

let button = UIButton() 
button.setTitleColor(UIColor.red, for: .normal) 

Ansonsten können Sieverwendenund setzen Sie tintColor direkt.

let button = UIButton(type: .custom) 
button.tintColor = UIColor.red 
+0

Jetzt funktioniert es, aber ich kann nicht verstehen warum. In den restlichen Schaltflächen meines Projekts kann ich es direkt mit 'customButton.tintColor = UIColor.red' ändern. Warum ist es anders hier?Oder ist es etwas, das mit den Zuständen eines Knopfes zusammenhängt, die ich nicht wirklich verstehe, was meinst du? –

+0

@ Error404 Antwort bearbeitet – EridB

+1

Vielen Dank! Schließlich war das Storyboard der Schlüssel zum Fehler. –

0

Sie können den Titel direkt ändern mag:

let button = UIButton() 
button.titleLabel?.textColor = .red 
+0

Es ist auch nicht funktioniert. Ich habe das UIButton manuell erstellt. Ich muss nur seine Textfarbe Eigenschaft programmatisch ändern. –

1

Wenn Sie die tintColor als Titel Farbe verwendet werden soll, sollte der Typ System sein statt Custom

+0

Vielen Dank! Ich wusste, dass es eine lächerliche Sache sein sollte. –

Verwandte Themen