Колір тексту заголовка 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.