web-dev-qa-db-fra.com

Comment changer l'image UIButton dans Swift

J'essaie de changer l'image d'un UIButton en utilisant Swift ... Que dois-je faire?

C'est du code OBJ-C. Mais je ne sais pas avec Swift:

[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
97
Lop Hu

De votre code Obc-C, je pense que vous voulez définir une image pour le bouton alors essayez de cette façon:

let playButton  = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
    playButton.setImage(image, forState: .Normal)
}

En bref:

playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)

Pour Swift 3:

let playButton  = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
288
Dharmesh

supposons qu'il s'agit de votre connecté UIButton Name comme

@IBOutlet var btn_refresh: UIButton!

vous pouvez directement placer votre image dans trois modes

 // for normal state
btn_refresh.setImage(UIImage(named: "xxx.png"), forState: UIControlState.Normal)
     // for Highlighted state
      btn_refresh.setImage(UIImage(named: "yyy.png"), forState: UIControlState.Highlighted)

        // for Selected state
         btn_refresh.setImage(UIImage(named: "zzzz.png"), forState: UIControlState.Selected)

sur ton bouton d'action

  //MARK: button_refresh action
@IBAction func button_refresh_touchup_inside(sender: UIButton)
{
    //if you set the image on same  UIButton
    sender.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)

    //if you set the image on another  UIButton
       youranotherbuttonName.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)
}
9
Anbu.Karthik

dans Swift 4, exemple (Xcode 9) permettant d'activer ou de désactiver l'image du bouton (btnRec):

var bRec:Bool = true

@IBOutlet weak var btnRec: UIButton!
@IBAction func btnRec(_ sender: Any) {
    bRec = !bRec
    if bRec {
        btnRec.setImage(UIImage(named: "MicOn.png"), for: .normal)
    } else {
        btnRec.setImage(UIImage(named: "MicOff.png"), for: .normal)
    }
}
8
L.N.Vu

Pour ceux qui utilisent Assets.xcassets et Swift 3, ce serait comme ça (pas besoin de .png)

let buttonDone  = UIButton(type: .Custom)

if let image = UIImage(named: "Done") {
    self.buttonDone.setImage(image, for: .normal)
}
7
DS.

À partir de Swift 3.0. L'état normal a été supprimé. Vous pouvez utiliser ce qui suit pour appliquer l'état normal.

myButton.setTitle("myTitle", for: [])
6
PatientC

Je préfère la méthode d'initialisation de mes variables tout en haut:

let playButton:UIButton!
var image:UIImage!

puis en les plaçant dans viewDidLoad

override func viewDidLoad {
  ...
  playButton = UIButton(type: .Custom)
  imagePlay = UIImage(named:"play.png")
  playButton.setImage(imagePlay, forState: .Normal)
}
5
Kristian

Oui, même nous pouvons changer l’image de UIButton en utilisant flag.

class ViewController: UIViewController
{
    @IBOutlet var btnImage: UIButton!
    var flag = false

    override func viewDidLoad()
    {
        super.viewDidLoad()

        //setting default image for button
        setButtonImage()

    }

    @IBAction func btnClick(_ sender: Any)
    {
        flag = !flag
        setButtonImage()
    }

    func setButtonImage(){
        let imgName = flag ? "share" : "image"
        let image1 = UIImage(named: "\(imgName).png")!
        self.btnImage.setImage(image1, for: .normal)
    }

}

Ici, après chaque clic, votre image de bouton changera alternativement.

3
user5886755

pour ce faire, mettez le bouton en surbrillance et dans la barre d'outils de droite de l'insepctor, vous pouvez mettre à jour l'image. vous pouvez évidemment le faire dans le code également comme indiqué précédemment, mais ceci est une autre option pour vous

1
Richy Garrincha

dans Swift 3.:

@IBOutlet weak var selectionButton: UIButton!

selectionButton.setImage(UIImage.addBlueIcon, for: .selected)
0
Marcelo Gracietti

Dans Swift 4.2 et Xcode 10.1

Ajouter une image pour IButton sélectionné

button.addTarget(self, action: #selector(self.onclickDateCheckMark), for: .touchUpInside)//Target 
button.setImage(UIImage.init(named: "uncheck"), for: UIControl.State.normal)//When selected
button.setImage(UIImage.init(named: "check"), for: UIControl.State.highlighted)//When highlighted
button.setImage(UIImage.init(named: "check"), for: UIControl.State.selected)//When selected

Mais si vous voulez changer l'image du bouton sélectionné vous devez changer l'état sélectionné. Alors seulement l'image sélectionnée apparaîtra dans votre bouton.

@objc func onclickDateCheckMark(sender:UIButton) {
    if sender.isSelected == true {
        sender.isSelected = false
        print("not Selected")
    }else {
        sender.isSelected = true
        print("Selected")

    }
}
0
iOS