通过点击改变UIButton的图像 - XCode 6 Swift

时间:2014-11-19 19:52:40

标签: xcode swift

我只是试图这样做,当我点击一个UIButton(它当前显示一个shell的图像)时,图像变成了别的东西(在这种情况下,硬币)。 这是我到目前为止所尝试的并且没有取得任何成功。我找不到任何为Swift.Thanks做的事情。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var lblOutput: UILabel!
@IBOutlet weak var lblWin: UILabel!
@IBOutlet weak var lblLost: UILabel!
@IBOutlet weak var lblWinsAmt: UILabel!
@IBOutlet weak var lblLossesAmt: UILabel!



let coin = UIImage(named: "penny_head") as UIImage;


override func viewDidLoad() {
    super.viewDidLoad()
    //imgShell1.hidden = true //doesnt work
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func btnStart(sender: UIButton) {

}

@IBAction func btnShell1(sender: UIButton) {

    sender.setImage(coin,forState: UIControlState.Highlighted);
}

4 个答案:

答案 0 :(得分:7)

您设置控件的方式不正确。假设您有一个名为btnShell的按钮属性(并且它是您要设置的按钮),请将viewDidLoad()方法更改为:

override func viewDidLoad()
{
    super.viewDidLoad()

    btnShell.setImage(imgShell1, forState:.Normal);
    btnShell.setImage(coin, forState:.Highlighted);
}

然后从action方法中删除setImage(_:forState :)调用:

@IBAction func btnShell1(sender: UIButton) {
    sender.setImage(coin,forState: UIControlState.Highlighted);
}

答案 1 :(得分:4)

要永久更改按钮图像,您必须使用.Normal枚举案例,而不是.Highlighted作为控件状态:

sender.setImage(coin,forState: UIControlState.Normal)

设置.Highlighted状态的图像会使新图像仅在按钮处于该状态时显示,即点击它时。

答案 2 :(得分:0)

如果您想要永久更改UIButton的背景图片,则必须使用安东尼奥的方法:

sender.setImage(coin,forState: UIControlState.Normal)

点击按钮时,这不会更改UIKit的默认突出显示。如果您不希望按钮在触摸时突出显示,或者针对不同状态具有不同的外观,那么最好使用UIImageView

viewDidLoad()

imgView?.image = imgOne 
imgView?.userInteractionEnabled = true
imgView?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "changeImage:")) 

更改图像的功能:

func changeImage(recognizer: UITapGestureRecognizer){
    self.imgView?.image = imgTwo
}

答案 3 :(得分:0)

您也可以使用 isSelected

button.setImage(image2, for: .normal)
button.setImage(image1, for: .selected)