153 votes

UIB désactivé, pas fané ou gris

Dans mon application iPhone, j'ai un UIButton que j'ai créé dans Interface Builder. Je peux avec succès l'activer et le désactiver comme ceci dans mon code ...

 sendButton.enabled = YES;
 

ou

 sendButton.enabled = NO;
 

Cependant, l'aspect visuel du bouton est toujours le même! Ce n'est pas fané ou gris. Si je tente de cliquer dessus, il est activé ou désactivé comme prévu. Est-ce que je manque quelque chose? Ne devrait-il pas sembler fané ou gris?

Merci

204voto

Ravin Points 5601

Vous pouvez utiliser le code suivant,

 sendButton.enabled = YES;
    sendButton.alpha = 1.0;

or

sendButton.enabled = NO;
sendButton.alpha = 0.5;
 

Merci,

44voto

guywithmazda Points 86

Une autre option consiste à changer la couleur du texte (en gris clair par exemple) pour l'état désactivé. Dans l'éditeur de story-board, sélectionnez Désactivé dans le bouton contextuel Configuration d'état et utilisez le bouton contextuel Couleur du texte pour modifier la couleur du texte. Dans le code, utilisez le message -setTitleColor: forState:.

(Je me rends compte que c'est un article plus ancien, mais j'ai pensé que d'autres pourraient aimer cette option)

23voto

Jhaliya Points 24039

Essayez de définir les différentes images pour UIControlStateDisabled (image grise désactivée) et UIControlStateNormal (image normale) afin que le bouton génère l'état désactivé pour vous.

14voto

Antonio Moro Points 19

Si vous utilisez un bouton de texte, vous pouvez mettre dans viewDidLoad la méthode d'instance

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

Exemple:

 [self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
 

3voto

ChavirA Points 184

Vous pouvez utiliser les deux premières réponses et le résultat sera meilleur.

Dans l'inspecteur d'attributs (lorsque vous sélectionnez le bouton), définissez la configuration d'état sur Désactivé afin de définir la nouvelle image qui va apparaître lorsqu'elle est désactivée (supprimez le marqueur de la vérification Contenu-> Activé pour le désactiver). .

Et lorsque vous activez l'état, l'image se chargera à partir de cet état.

Ajouter la logique alpha à ceci est un bon détail.

Salutations!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X