Swift 图像点击按钮不改变

4
我有一个按钮,点击后应该更换图片,但由于某些原因它没有更换为UIControlState.Highlighted状态下设置的图片。
 override func viewDidLoad() {
    super.viewDidLoad()
    let versusButtonClickedImage = UIImage(named: "versus_button_cicked") as UIImage
    let versusButtonImage = UIImage(named: "versus_button") as UIImage
    versusButton.setImage( versusButtonImage, forState: UIControlState.Normal)


    versusButton.setImage(versusButtonClickedImage, forState: UIControlState.Highlighted)


}

那两个 as UIImage 部分是不必要的。 - ThomasW
图片应该有扩展名,仅名称无法检索到图片。UIImage(named: "versus_button.png") - Kumar KL
正常状态下,图像是否存在? - Kathiravan G
4个回答

9

你需要添加图片的扩展名。
不需要创建单独的图片变量。

testBtn.setImage(UIImage(named:"a1.png"),forState:UIControlState.Normal)
testBtn.setImage(UIImage(named:"a2.png"),forState:UIControlState.Highlighted)

1

记录一下(至少截止到2014年12月),你需要在UIImage(named:)中提供包括扩展名的图像名称,才能使其正常工作。
据我所知,在Obj-C中不必这样做。

例如:

self.CButton.setImage(UIImage(named: "ArrowUp30.png"), forState: UIControlState.Normal) 

But this one does not work:

self.CButton.setImage(UIImage(named: "ArrowUp30"), forState: UIControlState.Normal)

1
我可以帮助你进行翻译。以下是需要翻译的内容:

希望问题可能与图像名称有关,您可能还需要提供它们的扩展名: 而不是

 let versusButtonClickedImage = UIImage(named: "versus_button_cicked") as UIImage

使用

let versusButtonClickedImage = UIImage(named: "versus_button_cicked.png") as UIImage

0
'highlighted'状态表示用户按下按钮并保持按下状态(不离开屏幕)。因此,如果用户“轻触”(按下然后离开)按钮,则会恢复到“正常”状态。您应该在按钮的操作方法中手动设置不同的图像。
func buttonTapped() {
    let normalImage = self.button.imageForState(.Normal)
    let highlightedImage = self.button.imageForState(.Highlighted)
    button.setBackgroundImage(highlightedImage, forState: .Normal)
    button.setBackgroundImage(normalImage, forState: .Highlighted)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接