Цвет текста заголовка UIButton

Я устанавливаю цвет текста для UIButton

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

Не меняет цвет тот же самый код, который я использую в другом коде, который он работает.

Ответ 1

использование

Objective-C

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

Swift

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

Ответ 2

Я создал пользовательский класс MyButton, расширенный от UIButton. Затем добавьте это внутри Identity Inspector:

enter image description here

После этого измените тип кнопки на Пользовательский:

enter image description here

Затем вы можете установить атрибуты типа textColor и UIFont для своего UIButton для разных состояний:

enter image description here

Затем я также создал два метода внутри класса 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, потому что они просто доступны для краткого отображения выделения, а не для отображения самого выбора.

Ответ 3

В Swift:

Изменение цвета текста ярлыка сильно отличается от изменения его для UIButton. Чтобы изменить цвет текста для UIButton, используйте этот метод:

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