我只是试图这样做,当我点击一个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);
}
答案 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)