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.