J'ai le code suivant dans un viewController, toutes les sorties et actions sont correctement connectées. WHITE
et PURPLE
sont des UIColors pour lesquelles j'ai défini des constantes. J'ai également défini le UIWindow
du tintColor
sur PURPLE
et cela se propage jusqu'au bouton.
- (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;
}
Lorsque je clique sur le bouton, le texte ne devient pas blanc comme je l'ai dit dans viewDidLoad
voici quelques captures d'écran que j'aurais pu mieux recadrer! Comme vous pouvez le voir dans l'état en surbrillance, ce n'est pas blanc mais comme un mélange blanc et violet. Dois-je utiliser UIButtonTypeCustom
? J'ai entendu que si je le fais, je n'obtiendrai pas les avantages d'iOS 7 faisant sa magie avec tintColor
. Je ne sais pas quelle est la bonne façon de procéder. Merci d'avance.
Ne devriez-vous pas utiliser UIControlStateSelected?
D'accord, je viens de l'essayer moi-même, il ne veut pas bien fonctionner.
Vous devez définir votre style de bouton sur Personnalisé. Le style du système UIButton fait beaucoup de choses que vous ne pouvez pas changer. L'état du bouton en surbrillance correspond par défaut à sa propre implémentation qui est une version plus claire si votre teinte.
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:self.view.tintColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
Cela devrait vous donner le fond de texte blanc.