Dans mon application iPhone, j'ai un UIButton que j'ai créé dans Interface Builder. Je peux l'activer et le désactiver avec succès comme ceci dans mon code ...
sendButton.enabled = YES;
ou
sendButton.enabled = NO;
Cependant, l'aspect visuel du bouton est toujours le même! Il n'est ni fané ni gris. Si j'essaye de cliquer dessus, il est activé ou désactivé comme prévu. Est-ce que je manque quelque chose? Ne devrait-il pas avoir l'air fané ou gris?
ios
iphone
cocoa-touch
uibutton
Andy A
la source
la source
Réponses:
Vous pouvez utiliser le code suivant:
la source
changez simplement la configuration de l'état pour désactiver et choisissez ce que vous voulez, Image d'arrière-plan pour l'état désactivé
la source
Une autre option consiste à changer la couleur du texte (en gris clair par exemple) pour l'état désactivé.
Dans l'éditeur de storyboard, choisissez
Disabled
dans leState Config
bouton contextuel. Utilisez leText Color
bouton contextuel pour changer la couleur du texte.Dans le code, utilisez le
-setTitleColor:forState:
message.la source
Essayez de définir les différentes images pour
UIControlStateDisabled
(image grise désactivée) etUIControlStateNormal
(image normale) afin que le bouton génère l'état désactivé pour vous.la source
[ UIButton setAttributedTitle:forState:]
. Créez votre chaîne attribuée dans laquelle la couleur de premier plan de votre texte est définie sur une couleur transparente.Pour rendre le bouton estompé lorsqu'il est désactivé, vous pouvez définir l'alpha pour celui-ci. Deux options s'offrent à vous:
Première manière : si vous souhaitez postuler pour tous vos boutons dans votre application, vous pouvez donc écrire
extension
pour UIButton comme ceci:Deuxième façon : si vous souhaitez simplement appliquer pour certains boutons dans votre application, vous pouvez donc écrire une classe personnalisée à partir d'UIButton comme ci-dessous et utiliser cette classe pour laquelle vous souhaitez appliquer:
la source
Si vous utilisez un bouton de texte, vous pouvez mettre dans viewDidLoad la méthode d'instance
exemple:
la source
Vous pouvez utiliser
adjustsImageWhenDisabled
ce qui est la propriété deUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
la source
C'est une question assez ancienne, mais il existe un moyen très simple d'y parvenir.
myButton.userInteractionEnabled = false
Cela désactivera uniquement les gestes tactiles sans changer l'apparence du bouton
la source
Dans Swift :
ou
la source
Défini
title color
pour différents états:Utilisation: (la couleur du texte sera modifiée automatiquement)
la source
Créez une extension dans Swift> 3.0 plutôt que chaque bouton seul
la source
Vous pouvez utiliser les deux premières réponses et vous obtiendrez un meilleur résultat.
Dans l'inspecteur d'attributs (lorsque vous sélectionnez le bouton), modifiez la configuration de l'état sur Désactivé pour définir la nouvelle image qui apparaîtra lorsqu'elle sera désactivée (supprimez le marqueur dans la case Contenu-> Activé pour la désactiver) .
Et lorsque vous changez l'état en activé, l'image chargera celui de cet état.
Ajouter la logique alpha à cela est un bon détail.
la source
Swift 4+
Comment utiliser
la source
Je suis coincé sur le même problème. Mettre l'alpha n'est pas ce que je veux.
UIButton
a " image d'arrière-plan " et " couleur d'arrière-plan ". Pour l'image,UIButton
a une propriété comme@property (nonatomic) BOOL adjustsImageWhenDisabled
Et l'image d'arrière-plan est plus claire lorsque le bouton est désactivé. Pour la couleur d'arrière-plan, le réglage alpha, la solution de Ravin, fonctionne très bien.
Tout d'abord, vous devez vérifier si vous avez décoché la case "désactivé ajuste l'image" sous Utilitaires-Attributs.
Vérifiez ensuite la couleur d'arrière-plan de ce bouton.
(J'espère que c'est utile. Ceci est un ancien message; les choses ont peut-être changé dans Xcode).
la source
Il semble que le code suivant fonctionne correctement. Mais dans certains cas, cela ne fonctionne pas.
Si le code ci-dessus ne fonctionne pas, veuillez l'envelopper dans le fil principal. alors
si tu y vas avec swift, comme ça
De plus, si vous avez personnalisé UIButton, ajoutez-le à la classe Button.
Merci et bonne programmation !!!
la source
Si le
UIButton
est dans l'état combiné deselected
etdisabled
, son état estUIControlStateSelected | UIControlStateDisabled
.Son état doit donc être ajusté comme ceci:
Une approche consiste à sous-classer
UIButton
comme suit:la source
Cette question a beaucoup de réponses, mais elles ne semblent pas très utiles au cas où vous voudriez vraiment utiliser backgroundColor pour styliser vos boutons. UIButton a une option intéressante pour définir différentes images pour différents états de contrôle, mais il n'y a pas la même fonctionnalité pour les couleurs d'arrière-plan. L'une des solutions consiste donc à ajouter une extension qui générera des images à partir de la couleur et les appliquera au bouton.
Un seul problème avec cette solution - cette modification ne sera pas appliquée aux boutons créés dans le storyboard. Quant à moi, ce n'est pas un problème car je préfère styliser l'interface utilisateur à partir du code. Si vous souhaitez utiliser des storyboards, une magie supplémentaire est
@IBInspectable
nécessaire.La deuxième option est le sous-classement, mais je préfère éviter cela.
la source
Peut-être que vous pouvez sous-classer votre bouton et remplacer votre variable isEnabled. L'avantage est que vous pouvez réutiliser à plusieurs endroits.
la source
.h:
la source