Подтвердить что ты не робот

Установить цвет заголовка для UIButton, если подсвечивается iOS 7

У меня есть следующий код в viewController, все выходы и действие подключены правильно. WHITE и PURPLE являются UIColors, для которых я определил константы. Я также установил UIWindow tintColor в PURPLE и распространяется до кнопки.

- (void)viewDidLoad {
    [super viewDidLoad];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    button.backgroundColor = WHITE;
    button.layer.borderWidth = 1.0;
    button.layer.masksToBounds = YES;
    button.layer.cornerRadius = 5.0;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchDown:(id)sender {
    button.backgroundColor = PURPLE;
    button.layer.borderColor = WHITE.CGColor;
}

-(IBAction) buttonTouchUpOutside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchUpInside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

Когда я нажимаю кнопку, текст не бежит, как я сказал в viewDidLoad

вот несколько скриншотов, которые я мог бы улучшить! Как вы можете видеть в выделенном состоянии, он не белый, а белый и фиолетовый. Нужно ли использовать UIButtonTypeCustom? Я слышал, что если я это сделаю, я не получу преимущества iOS 7, делающего свою магию с помощью tintColor. Не знаете, как правильно это сделать. Спасибо заранее.

normalStatehighlightedState

4b9b3361

Ответ 1

Разве вы не используете UIControlStateSelected?

Хорошо, я просто попробовал это сам, он не хочет хорошо работать.

Вам нужно настроить стиль своей кнопки на "Пользовательский". Стиль системы UIButton делает много вещей, которые вы не можете изменить. Выбранное состояние кнопки по умолчанию имеет свою собственную реализацию, которая является более легкой версией, если ваш оттенок.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:self.view.tintColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];

Это должно получить белый фон.

Ответ 2

Надеюсь, что это ответ на ваш вопрос или кто-то еще затрудняется установить цвет названия при выборе кнопки.

[btnCustom setTitleColor:[UIColor whiteColor] forState: UIControlStateSelected];
[btnCustom setTitleColor:[UIColor redColor] forState: UIControlStateNormal];

когда вы хотите, чтобы заголовок кнопки был красным, а не btnCustom.selected = NO, и если вы хотите кнопку с белым цветом заголовка, чем btnCustom.selected = YES