Jak ustawić kolor tekstu tytułu w UIButton?

124

Próbowałem zmienić kolory tekstu przycisku, ale nadal pozostaje biały.

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)

Próbowałem też zmienić to na czerwony, czarny, niebieski, ale nic się nie dzieje.

coolmac
źródło

Odpowiedzi:

282

Musisz użyć func setTitleColor(_ color: UIColor?, for state: UIControlState)tego samego sposobu, w jaki ustawiłeś rzeczywisty tekst tytułu. Dokumenty

isbeauty.setTitleColor(UIColorFromRGB("F21B3F"), for: .normal)
luk2302
źródło
ze względu na czytelność wolę nie kwalifikować moich wyliczeń, ale to tylko ja
styler1972
@ styler1972 Ja też to wolę - najwyraźniej nie byłem tego świadomy, kiedy początkowo pisałem odpowiedź
luk2302
1
isbeauty.setTitleColor (UIColorFromRGB (rgbValue: "F21B3F"), dla: .Normal)
Arunabh Das
3
Uważam, że od xcode 9 jest teraz „.normal” zamiast „.Normal”
Buddhisthead
4
mój kod: yourButtonName.setTitleColor (UIColor.red, dla: .normal)
devgrg Stycznia
111

Szybkie rozwiązanie interfejsu użytkownika

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

Swift 3, Swift 4, Swift 5

poprawiać komentarze. To powinno działać:

button.setTitleColor(.red, for: .normal)
Wiaczesław
źródło
10

Przykład ustawienia koloru tytułu przycisku

btnDone.setTitleColor(.black, for: .normal)
handiansom
źródło
8
Jaka jest różnica między moją odpowiedzią a twoją?
Wiaczesław
3

To jest odpowiedź zgodna z szybką 5. Jeśli chcesz użyć jednego z wbudowanych kolorów, możesz po prostu użyć

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

Jeśli chcesz mieć niestandardowe kolory, utwórz rozszerzenie dla UIColor, jak poniżej.

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

Następnie użyj go jako przycisku, jak poniżej.

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

Wskazówka: możesz użyć tej metody do przechowywania niestandardowych kolorów z kodu koloru rgba i ponownego wykorzystania go w całej aplikacji.

Jay Mayu
źródło
2
func setTitleColor(_ color: UIColor?, 
               for state: UIControl.State)

Parametry :

kolor:
kolor tytułu, który ma być używany w określonym stanie.

stan:
stan używający określonego koloru. Możliwe wartości są opisane w UIControl.State.

Próbka :

let MyButton = UIButton()
MyButton.setTitle("Click Me..!", for: .normal)
MyButton.setTitleColor(.green, for: .normal)
Ramprasath Selvam
źródło
0

odnosząc się do przycisków opcji, możesz to również zrobić za pomocą sterowania segmentowego w następujący sposób:

krok 1: przeciągnij podzieloną na segmenty kontrolkę do swojego widoku w inspektorze atrybutów zmień tytuł dwóch segmentów, na przykład „Mężczyzna” i „Kobieta”

krok 2: utwórz punkt sprzedaży i odpowiednią akcję w kodzie

krok 3: utwórz zmienną do wykorzystania w przyszłości, aby zawierała dane wyboru

w kodzie wykonaj następujące czynności:

@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)
    }
}
Shy Attoun
źródło