Kolor tekstu tytułu UIButton


Odpowiedzi:


438

posługiwać się

Cel C

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

Szybki

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

2
to działa. ale kod z pierwotnego pytania również często działa. ktoś wie, dlaczego tytuł tylko czasami nie odpowiada kodowi w pytaniu?
crgt

7
Powodem jest to, że gdy przycisk zostanie kliknięty lub w inny sposób zmieni stan, kod w przycisku resetuje właściwości titleLabel w celu dopasowania do wewnętrznych ustawień przycisku dla tego stanu.
psycotica0

1
dokumentacja firmy apple stwierdza, co następuje: „Nie używaj obiektu etykiety do ustawiania koloru tekstu ani koloru cienia. Zamiast tego użyj metod setTitleColor: forState: i setTitleShadowColor: forState: tej klasy, aby wprowadzić te zmiany.” Nie ma jednak prawdziwego wyjaśnienia „dlaczego”.
clauswey

NAJWAŻNIEJSZE, gdy ustawisz kolor dla UIControlStateNormal, nie ma potrzeby ustawiania go dla wszystkich innych stanów (jeśli chcesz, aby przycisk wyglądał tak samo po naciśnięciu).
drpawelo

jak globalnie zmienić kolor tekstu przycisku w delegacie aplikacji. Może używając UIButton.appearance (). SetTitleColor?
Awais Fayyaz,

5

Stworzyłem niestandardową klasę MyButton rozszerzoną z UIButton. Następnie dodał to w Identity Inspector:

wprowadź opis obrazu tutaj

Następnie zmień typ przycisku na Niestandardowy :

wprowadź opis obrazu tutaj

Następnie możesz ustawić atrybuty takie jak textColori UIFontdla UIButtonróżnych stanów:

wprowadź opis obrazu tutaj

Następnie utworzyłem również dwie metody wewnątrz MyButtonklasy, które muszę wywołać w moim kodzie, gdy chcę, aby a UIButtonbyło wyświetlane jako podświetlone:

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

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

Musisz ustawić titleColorna normalny, podświetlony i wybrany, UIControlStateponieważ zgodnie z dokumentacją może istnieć więcej niż jeden stan naraz UIControlState. Jeśli nie utworzysz tych metod, UIButtonwyświetlą one zaznaczenie lub wyróżnienie, ale nie pozostaną one w UIColorustawieniach, które ustawisz wewnątrz, UIInterface Builderponieważ są one dostępne tylko do krótkiego wyświetlania wyboru, a nie do wyświetlania samego wyboru.


Czy ostatni fragment kodu nie powinien używać |zamiast &?
130e13a

5

W Swift:

Zmiana koloru tekstu etykiety jest zupełnie inna niż zmiana w przypadku pliku UIButton. Aby zmienić kolor tekstu na UIButtonpotrzeby tej metody:

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

0

wersja swift 5:

Używając domyślnego wbudowanego koloru:

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

LUB

Możesz użyć własnego koloru, używając metody 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)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.