Колір тексту заголовка UIB


168

Я встановлюю колір тексту для UIButton

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                                                     green:71/255.0 
                                                      blue:113/255.0 
                                                     alpha:1.0];

Це не змінює колір того самого коду, який я використовую в іншому коді, який він працює.


Відповіді:


438

використання

Ціль-С

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

Швидкий

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

2
це працює. але код в оригінальному питанні також часто працює. хтось знає, чому заголовок лише іноді не відповідає на код у питанні?
crgt

7
Причина полягає в тому, що при натисканні кнопки або зміні стану інший код у кнопці скидає властивості titleLabel, щоб відповідати внутрішнім налаштуванням, які кнопка має для цього стану.
psycotica0

1
в документації яблука зазначено наступне: "Не використовуйте об'єкт мітки для встановлення кольору тексту або кольору тіні. Натомість використовуйте setTitleColor: forState: і setTitleShadowColor: forState: методи цього класу, щоб внести ці зміни." Немає реального пояснення "чому", хоча.
clauswey

НАЙБІЛЬШЕ, коли ви встановлюєте колір для UIControlStateNormal, не потрібно встановлювати його для всіх інших станів (якщо ви хочете, щоб кнопка виглядала однаково при натисканні).
drpawelo

як змінити колір тексту кнопки в усьому світі в делеґаті програми. Можливо, за допомогою UIButton.appearance (). SetTitleColor?
Awais Fayyaz

5

Я створив спеціальний клас, з якого поширюється MyButtonUIButton . Потім додайте це всередині Identity Inspector:

введіть тут опис зображення

Після цього змініть тип кнопки на Custom :

введіть тут опис зображення

Тоді ви можете встановити такі атрибути як textColorі UIFontдля UIButtonрізних станів:

введіть тут опис зображення

Тоді я також створив два методи всередині MyButtonкласу, які мені потрібно викликати всередині свого коду, коли я хочу, UIButtonщоб атрибут відображався як виділений:

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

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

Ви повинні встановити значення " titleColorнормальне", "підсвічувати" та "вибирати", UIControlStateоскільки одночасно може бути більше одного стану відповідно до документації UIControlState. Якщо ви не створите цих методів, у вікні UIButtonвідображатиметься вибір або виділення, але вони не залишаться у UIColorвашій установці всередині, UIInterface Builderоскільки вони доступні лише для короткого відображення вибраного вибору, а не для відображення самого вибору.


Чи не повинен |замість цього використовувати останній фрагмент коду &?
130e13a

5

У Свіфті:

Зміна кольору тексту етикетки зовсім інша, ніж зміна його на UIButton. Щоб змінити колір тексту, UIButtonвикористовуйте цей метод:

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

0

версія swift 5:

Використовуючи вбудований колір за замовчуванням:

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

АБО

Ви можете використовувати власний колір за допомогою методу 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.