Créer un bouton par programme et définir une image d'arrière-plan
Quand j'ai essayer de créer un bouton et la définition d'une image d'arrière-plan dans Swift:
let button = UIButton.buttonWithType(UIButtonType.System) as UIButton
button.frame = CGRectMake(100, 100, 100, 100)
button.setImage(IMAGE, forState: UIControlState.Normal)
button.addTarget(self, action: "btnTouched:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button)
J'obtiens toujours un message d'erreur: "Ne peut pas convertir l'expression est de type 'Void' de type 'UIImage'".
- Pouvez-vous montrer le code où vous déclarez
IMAGE
? - Comment êtes-vous la création de l'image? Peut-être besoin de déballer IMAGE!
IMAGE
devrait ressembler àUIImage(named: "name")
- Merci cela fonctionne! J'ai seulement dit: "bouton.setImage("CircleTap", forState: UIControlState.Normal)", mais maintenant il fonctionne parfaitement
Vous devez vous connecter pour publier un commentaire.
Votre code devrait ressembler à ci-dessous
as? UIImage
Votre version de crash siimageNamed:
retourne nil.setImage
. Je suppose que cela dépend de comment défensive que vous souhaitez obtenir et puisque vous avez le contrôle local de l'actif il ne devrait pas être une surprise avec un test unitaire ou deuxas UIImage?
UIImage(...)
jamais de retourAny?
? Ou pourquoi avez-vous convertir le type d'objet du même type?Essayer ci-dessous:
Laissez-moi savoir si cela fonctionne ou pas?
SWIFT 3 Version de Alex Reynolds Réponse
Vous avez besoin de vérifier l'image n'est pas nul, avant de l'affecter à un bouton.
Exemple:
C'est comment vous pouvez créer un beau bouton avec une lunette et des bords arrondis:
Pour définir l'arrière-plan on ne peut plus utiliser
forState
, nous devons donc utiliserfor
pour définir laUIControlState
:Mise à jour Swift 3
Swift: Interface utilisateur Bouton créer par programmation
Swift 5 version de accepté de répondre:
où bien sûr
L'image est aligné au centre par défaut. Vous pouvez modifier ce réglage par bouton imageEdgeInsets, comme ceci: