it-swarm.com.ru

Программное изменение цвета шрифта UIButton в зависимости от состояния

Я пытаюсь программно создать UIButton. Однако по умолчанию он становится белым (это цвет по умолчанию для моей панели навигации, я считаю, что это актуально). Я хочу, чтобы это был просто синий цвет Apple по умолчанию в iOS7. Мне удалось изменить цвет для его состояния по умолчанию, но как только я его выберу, текст снова становится белым. Я не могу понять, как сохранить его синим.

Может кто-нибудь объяснить мне, как я могу программно создать UIButton и заставить его работать так же, как если бы я создал его в раскадровке?

Текущий код:

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
cancelButton.frame = CGRectMake(320 - 150, 0, 140, 40);
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
cancelButton.titleLabel.tintColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
cancelButton.titleLabel.textColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];

Спасибо.

10
Ian

Попробуйте этот код:

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cancelButton setFrame:CGRectMake(320 - 150, 0, 140, 40)];
[cancelButton setBackgroundColor:[UIColor clearColor]];
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted]; // This will helps you during click time title color will be blue color
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton addTarget:self action:@selector(button_Action) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:cancelButton];
28
Mind Pixel

Только что попробовал с

[cancelButton setTitleColor:[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0/255.0 alpha:1.0] forState:UIControlStateNormal];

Для получения дополнительной информации читайте официальная документация UIButton.

3
iPatel

Ты пробовал это

[cancelButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
1
Sunny Shah

Это решит вашу проблему,

    [cancelButton setTitleColor:YOUR COLOR forState:SPECIFIED STATE];

Значения состояния: 

UIControlStateNormal
UIControlStateHighlighted                
UIControlStateDisabled    
UIControlStateSelected 
1
Apple

Попробуйте использовать 

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state 

для определения цветов для всех необходимых состояний.

0
Aloha Silver

Swift:

let button = UIButton (type: UIButtonType.system)

Это создаст кнопку, которая использует стандартный цвет оттенка, как кнопка, добавленная к раскадровке в конструкторе интерфейса.

0
Dave Anderson