Wie stelle ich die Titeltextfarbe von UIButton ein?


124

Ich habe versucht, die Farben des Textes für eine Schaltfläche zu ändern, aber sie bleibt immer noch weiß.

isbeauty = UIButton()
isbeauty.setTitle("Buy", forState: UIControlState.Normal)
isbeauty.titleLabel?.textColor = UIColorFromRGB("F21B3F")
isbeauty.titleLabel!.font = UIFont(name: "AppleSDGothicNeo-Thin" , size: 25)
isbeauty.backgroundColor = UIColor.clearColor()
isbeauty.layer.cornerRadius = 5
isbeauty.layer.borderWidth = 1
isbeauty.layer.borderColor = UIColorFromRGB("F21B3F").CGColor
isbeauty.frame = CGRectMake(300, 134, 55, 26)
isbeauty.addTarget(self,action: "first:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(isbeauty)

Ich habe auch versucht, es rot, schwarz, blau zu ändern, aber es passiert nichts.

Antworten:


279

Sie müssen auf func setTitleColor(_ color: UIColor?, for state: UIControlState)die gleiche Weise wie Sie den eigentlichen Titeltext festlegen. Docs

isbeauty.setTitleColor(UIColorFromRGB("F21B3F"), for: .normal)

Aus Gründen der Lesbarkeit bevorzuge ich es, meine Aufzählungen nicht zu qualifizieren, aber das bin nur ich
styler1972

@ styler1972 Ich bevorzuge das auch - anscheinend war mir das nicht bewusst, als ich die Antwort schrieb
luk2302

1
isbeauty.setTitleColor (UIColorFromRGB (rgbValue: "F21B3F"), für: .Normal)
Arunabh Das

3
Ich glaube, dass es ab xcode 9 jetzt ".normal" statt ".Normal" ist
Buddhisthead

4
Mein Code: yourButtonName.setTitleColor (UIColor.red, für: .normal)
devgrg

111

Schnelle UI- Lösung

Button(action: {}) {
            Text("Button")
        }.foregroundColor(Color(red: 1.0, green: 0.0, blue: 0.0))

Swift 3, Swift 4, Swift 5

Kommentare zu verbessern. Das sollte funktionieren:

button.setTitleColor(.red, for: .normal)

10

Beispiel für die Einstellung der Titelfarbe der Schaltfläche

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

8
Was ist der Unterschied zwischen meiner und deiner Antwort?
Vyacheslav

3

Dies ist eine schnelle 5 kompatible Antwort. Wenn Sie eine der integrierten Farben verwenden möchten, können Sie diese einfach verwenden

button.setTitleColor(.red, for: .normal)

Wenn Sie benutzerdefinierte Farben wünschen, erstellen Sie zuerst eine Erweiterung für eine UIColor (siehe unten).

import UIKit
extension UIColor {
    static var themeMoreButton = UIColor.init(red: 53/255, green: 150/255, blue: 36/255, alpha: 1)
}

Verwenden Sie es dann wie unten für Ihre Schaltfläche.

button.setTitleColor(UIColor.themeMoreButton, for: .normal)

Tipp: Mit dieser Methode können Sie benutzerdefinierte Farben aus dem rgba-Farbcode speichern und in Ihrer gesamten Anwendung wiederverwenden.


2
func setTitleColor(_ color: UIColor?, 
               for state: UIControl.State)

Parameter :

color:
Die Farbe des Titels, der für den angegebenen Status verwendet werden soll.

state:
Der Status, der die angegebene Farbe verwendet. Die möglichen Werte sind in UIControl.State beschrieben.

Beispiel :

let MyButton = UIButton()
MyButton.setTitle("Click Me..!", for: .normal)
MyButton.setTitleColor(.green, for: .normal)

0

In Bezug auf Optionsfelder können Sie dies auch mit Segmented Control wie folgt tun:

Schritt 1: Ziehen Sie ein segmentiertes Steuerelement in Ihre Ansicht im Attributinspektor. Ändern Sie den Titel der beiden Segmente, z. B. "Männlich" und "Weiblich".

Schritt 2: Erstellen Sie eine Steckdose und eine Aktion dafür im Code

Schritt 3: Erstellen Sie eine Variable für die zukünftige Verwendung, die die Daten der Auswahl enthält

Gehen Sie im Code wie folgt vor:

@IBOutlet weak var genderSeg: UISegmentedControl!

var genderPick : String = ""


 @IBAction func segAction(_ sender: Any) {

    if genderSeg.selectedSegmentIndex == 0 {
         genderPick = "Male"
        print(genderPick)
    } else if genderSeg.selectedSegmentIndex == 1 {
        genderPick = "Female"
          print(genderPick)
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.