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

时间:2015-06-29 05:47:08

标签: ios image swift button

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

我尝试使用Selected而不是突出显示,但这不起作用。 (初始图像在“属性”检查器中设置)。这就是我所拥有的 -

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

我意识到突出显示意味着虽然在另一个我希望它改变回来的图像(在桌面视图的单元格中)它停留了,这就是为什么我认为它适用于这个。我该怎么做才能让它保持更改为新图像?

3 个答案:

答案 0 :(得分:4)

我认为你需要这段代码:

@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)
}

<强>更新

如果您想更改播放/暂停等图像,则可以这样做:

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
    }

}

答案 1 :(得分:0)

我认为您仅在突出显示状态下更新图像,因此当您释放按钮时,它会返回到原始图像。尝试将其更改为“正常”状态,以便更改图像。拿一个标志来检查播放和暂停状态。

@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)
       }
    }

答案 2 :(得分:-1)

虽然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 
}