web-dev-qa-db-fra.com

Comment changer l'image du bouton rapidement?

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é? 

4
user2303213

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)
}
10
Meagan S.

Swift 3

yourBtn.setImage( UIImage.init(named: "imagename"), for: .normal)
8
Amr Angry

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)
}
2
Mikita Atamanyuk

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é'.

0
wenqi

Let image = UIImage (nommé: "redTap.png") TapButton.setImage (image, .Normal)

0
impression7vx

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)
}
0
Marco
let button = UIButton(type: .Custom)
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate)
button.setImage(image, forState: .Normal)
button.tintColor = UIColor.redColor()
0
user3441734