Réponses:
À partir de votre code Obc-C, je pense que vous souhaitez 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)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
dans Swift 4, (Xcode 9) exemple pour activer ou 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)
}
}
supposons que c'est votre connexion UIButton Name
comme
@IBOutlet var btn_refresh: UIButton!
vous pouvez placer directement 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 l'action de votre bouton
//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)
}
Je préfère d'abord la méthode d'initialisation de mes variables en haut:
let playButton:UIButton!
var image:UIImage!
puis en les définissant dans viewDidLoad
override func viewDidLoad {
...
playButton = UIButton(type: .Custom)
imagePlay = UIImage(named:"play.png")
playButton.setImage(imagePlay, forState: .Normal)
}
Oui, même nous pouvons changer l'image d'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, l'image de votre bouton changera alternativement.
Swift 5 et garantit que l'image s'adapte à la taille du bouton mais reste dans les limites des boutons.
yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill
// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)
vous pouvez réellement le faire en mettant en surbrillance le bouton et dans l'insepctor sur la barre d'outils de droite, vous pouvez mettre à jour l'image. évidemment, vous pouvez le faire dans le code également comme indiqué précédemment, mais c'est une autre option pour vous
Dans Swift 4.2 et Xcode 10.1
Ajouter une image pour l' UIButton 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 son état sélectionné. Ensuite, seule 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")
}
}
dans swift 3.0 :
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)