Antworten:
Ich denke, Sie möchten anhand Ihres Obc-C-Codes ein Bild für die Schaltfläche festlegen. Versuchen Sie also Folgendes:
let playButton = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
playButton.setImage(image, forState: .Normal)
}
Zusamenfassend:
playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)
Für Swift 3:
let playButton = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
in Swift 4 (Xcode 9) Beispiel, um das Bild der Schaltfläche auf Ein oder Aus (btnRec) zu schalten:
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)
}
}
Nehmen Sie an, dass dies Ihr verbundenes UIButton Name
wie ist
@IBOutlet var btn_refresh: UIButton!
Sie können Ihr Bild direkt in drei Modi platzieren
// 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)
auf Ihrer Button-Aktion
//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)
}
Ich bevorzuge die Methode, meine Variablen zuerst oben zu initialisieren:
let playButton:UIButton!
var image:UIImage!
und setzen Sie sie dann in viewDidLoad
override func viewDidLoad {
...
playButton = UIButton(type: .Custom)
imagePlay = UIImage(named:"play.png")
playButton.setImage(imagePlay, forState: .Normal)
}
Ja, sogar wir können das Bild von UIButton mithilfe des Flags ändern.
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)
}
}
Hier ändert sich nach jedem Klick alternativ Ihr Schaltflächenbild.
Swift 5 und stellt sicher, dass das Bild auf die Größe der Schaltfläche skaliert, aber innerhalb der Schaltflächengrenzen bleibt.
yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill
// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)
Sie können dies tatsächlich tun, indem Sie die Schaltfläche markieren und innerhalb des Insektors in der rechten Symbolleiste das Bild aktualisieren. Natürlich können Sie dies auch wie zuvor angegeben im Code tun, aber dies ist eine weitere Option für Sie
In Swift 4.2 und Xcode 10.1
Bild für ausgewählten UIButton hinzufügen
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
Wenn Sie jedoch das ausgewählte Schaltflächenbild ändern möchten, müssen Sie den ausgewählten Status ändern. Dann wird nur das ausgewählte Bild in Ihrer Schaltfläche angezeigt.
@objc func onclickDateCheckMark(sender:UIButton) {
if sender.isSelected == true {
sender.isSelected = false
print("not Selected")
}else {
sender.isSelected = true
print("Selected")
}
}
in schnell 3.0 :
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)