2014-11-10 14 views
65

Ich versuche, das Bild eines UIButton mit Swift zu ändern ... Was soll ich tunWie sich ändern UIButton Bild in Swift

Dies ist OBJ-C code.but ich nicht mit Swift wissen:

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

Antwort

204

Von Ihrem Obc-C-Code glaube ich Ihnen ein Bild für Taste festlegen wollen so versuchen, auf diese Weise:

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

Kurz:

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) 
+5

sollten Sie buttonWithType zu UIButtonType.Custom, nicht im System eingestellt, bis das Bild – sazz

+6

Für diejenigen, zeigt für Syntax Swift 3 suchen: 'playButton.setImage (UIImage (genannt: "play.png"), für: .Normal) ' –

0

Sie tatsächlich tun können Sie die Taste und im insepctor auf der rechten Werkzeugleiste durch Markieren Sie das Bild aktualisieren. Natürlich kann man es im Code tun auch früher als angegeben, aber dies ist eine weitere Option für Sie

5

ich die Methode bevorzugen meiner Variablen am Anfang zunächst initialisiert:

let playButton:UIButton! 
var image:UIImage! 

und Setzen sie dann in viewDidLoad

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

davon aus, dass dies Ihr UIButton Name wie

@IBOutlet var btn_refresh: UIButton! 
verbunden ist

Ihr können Sie Ihr Bild in drei Modi

// 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 dem 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) 
} 
+0

Sie müssen die Taste nicht als Steckdose festlegen, wenn Sie eine Aktion für die Taste haben. Der Absender der Schaltflächenparameter ist ein Verweis auf die Schaltfläche, so dass Sie einfach "lay yourButton = sender as! UIButton" ausführen und dann die Änderungen an der Schaltfläche nach Bedarf vornehmen können. –

6

Ab swift 3.0 .Normal Zustand wurde removed.you können folgende Normalzustand gelten direkt vergeben.

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

Für jedermann mit Assets.xcassets und Swift 3, es so sein würde (keine Notwendigkeit für .png)

let buttonDone = UIButton(type: .Custom) 

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

in schnellen 3,0:

@IBOutlet weak var selectionButton: UIButton! 

selectionButton.setImage(UIImage.addBlueIcon, for: .selected) 
3

Ja, sogar wir können das Bild von UIButton ändern, indem wir Flag verwenden.

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, nach jedem Klick ändert sich Ihr Buttonbild alternativ.