点击时如何更改按钮的图像 - Swift

How do I change the image of a button when tapped - Swift

我试图在点击时更改按钮的图像(这是我希望播放更改为暂停的音频播放器)。到目前为止,我只设法在按住按钮时更改它,然后在松开按钮时更改回来。

我试过使用 Selected 而不是 Highlighted 但这不起作用。 (初始图像在属性检查器中设置)。这就是我的 -

 @IBAction func buttonTapped(sender: AnyObject) {
           ColourTestButton.setImage(UIImage(named: "blank-purple.jpg"), forState:.Highlighted) 
        }

我意识到突出显示的意思只是在我希望它变回的另一张图片上(在 Table 视图的单元格中)它保留了下来,这就是为什么我认为它适用于这个。我必须在这里做什么才能使其保持更改为新图像?

我认为您需要此代码:

@IBAction func buttonTapped(sender: AnyObject) {
       let image = UIImage(named: "blank-purple.jpg") as UIImage!
       let playButton  = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
       ColourTestButton.setImage(image, forState: .Normal)
}

更新:

如果你想像play/pause那样改变图像,那么你可以这样做:

var pressed = false
@IBAction func pressed(sender: AnyObject) {

    if !pressed {
        let image = UIImage(named: "pauseImage.png") as UIImage!
        let playButton  = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        btn.setImage(image, forState: .Normal)
        pressed = true
    } else {

        let image = UIImage(named: "playImage.png") as UIImage!
        let playButton  = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        btn.setImage(image, forState: .Normal)
        pressed = false
    }

}

虽然 Dharmesh Kheni 的回答不错,但我还是建议使用两个按钮。您可以在单独的函数或界面生成器中设置它们,然后根据状态显示和隐藏它们。像这样:

func setButtons()
{
      playBtn.setImage(UIImage(named: "play.png"),  forState:.Normal)
      pauseBtn.setImage(UIImage(named: "play.png"),  forState:.Normal)
      pauseBtn.hidden = true
}

@IBAction func playTapped(sender: AnyObject) 
{
      playBtn.hidden = true
      pauseBtn.hidden = flase

      //do other stuff 
}

@IBAction func pauseTapped(sender: AnyObject) 
{
      playBtn.hidden = false
      pauseBtn.hidden = true

      //do other stuff 
}

我认为您只是在高亮状态下更新图像,所以当您释放按钮时它会返回到原始图像。尝试在正常状态下更改它,以便它会更改图像。拿一个标志来检查播放和暂停条件。

@IBAction func buttonTapped(sender: AnyObject) {
       if (!flag)
       { 
         //for Play
         flag = true
         ColourTestButton.setImage(UIImage(named:"USE PLAY IMAGE"), forState:. Normal) 
       }
       else
       {
         //for Pause
         flag = false
         ColourTestButton.setImage(UIImage(named:"USE PAUSE IMAGE"), forState:. Normal)
       }
    }