Je travaille sur une application qui a un bouton. Le bouton n'a pas de texte, image ou fond.
Donc, ce que je veux faire est de lui donner une image dans la fonction viewDidLoad.
Voici ce que j'ai
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
tapButton.setImage("redTap.png", forState: UIControlState.Normal)
}
Mais j'ai une erreur qui dit que je ne peux pas convertir la chaîne en UIIMage.
Comment puis-je le faire fonctionner?
J'ai essayé:
let image = UIImage(named: "redTap.png")
tapButton.setImage(image, forState: UIControlState.Normal)
Je l'ai obtenu au travail mais maintenant j'ai un problème.
L'image est supposée être un texte rouge mais il apparaît en bleu.
J'ai pu obtenir l'image correctement affichée en utilisant:
let image = UIImage(named: imageColor[randNum])?.imageWithRenderingMode(.AlwaysOriginal)
tapButton.setImage(image, forState: UIControlState.Normal)
Ce que je veux maintenant, c'est que le bouton ne soit pas mis en surbrillance lorsque vous appuyez sur le bouton. J'ai quelques autres boutons qui ont des images assignées à eux dans xcode et non par code. Ils ne mettent pas en évidence lorsqu'il est pressé.
Alors, comment puis-je me débarrasser de la surbrillance lorsque le bouton est enfoncé?
Vous n'avez pas besoin de ".png".
Si ".imageWithRenderingMode (.AlwaysOriginal)" fonctionne pour vous: pour conserver la même image dans différents états, vous devez définir la même image/les mêmes propriétés pour les différents états.
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal)
tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Highlighted)
}
Swift 3
yourBtn.setImage( UIImage.init(named: "imagename"), for: .normal)
maintenant (édition Swift 3):
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal)
tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal)
}
Il y a une solution simple:
@IBOutlet var tapButton: UIButton!{
didSet{
let image = UIImage(named: imageColor[randNum])
tapButton.setImage(image, forState: UIControlState.Normal)
}
De plus, dans l'inspecteur d'attributs, définissez le type de bouton sur 'Personnalisé'.
Let image = UIImage (nommé: "redTap.png") TapButton.setImage (image, .Normal)
Premièrement, je mettrais l'image que vous vouliez dans le dossier Assets.xcassets. Faites-le simplement glisser. Ensuite, vous pouvez l'appeler comme vous le souhaitez en double-cliquant dessus. Disons que cela s'appelle "redTap".
Pour le code, vous mettriez:
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let redTapImage = UIImage(named: "redTap")
tapButton.setImage(redTapImage, forState: UIControlState.Normal)
}
let button = UIButton(type: .Custom)
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate)
button.setImage(image, forState: .Normal)
button.tintColor = UIColor.redColor()