UIButton 不改变图像

1 uibutton uiimage ios swift

我正在尝试为我的应用创建一个“喜欢”按钮。当我按下按钮时,我想让它变成第二张图像,当我再次按下它时,我又把它改回第一张图像。

这是我的代码:

@IBAction func sendLike(sender: UIButton) {

    if let _ = UIImage(named:"pinkLike.png") {
        sender.setImage(UIImage(named:"like.png"), forState: .Normal)
    }

    if let _ = UIImage(named:"like.png") {
        sender.setImage(UIImage(named:"pinkLike.png"), forState: .Normal)
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这行代码按我希望的方式工作:

if let _ = UIImage(named:"like.png") {
        sender.setImage(UIImage(named:"pinkLike.png"), forState: .Normal)
    }
Run Code Online (Sandbox Code Playgroud)

但是当我再次按下按钮时,这条线不会改变它:

if let _ = UIImage(named:"pinkLike.png") {
        sender.setImage(UIImage(named:"like.png"), forState: .Normal)
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

您将这两个图像都设置为正常状态,因此您"like.png"将始终覆盖"pinkLike.png"图像。

您需要置于"pinkLike.png"不同的状态。

if let _ = UIImage(named:"pinkLike.png") {
    sender.setImage(UIImage(named:"like.png"), forState: .Selected)
}
Run Code Online (Sandbox Code Playgroud)

并在设置图像之前更改您选择的状态。所以你的代码会是这样的。

@IBAction func sendLike(sender: UIButton) {
    sender.selected = !sender.selected
    if let _ = UIImage(named:"pinkLike.png") {
        sender.setImage(UIImage(named:"like.png"), forState: .Normal)
    }

    if let _ = UIImage(named:"like.png") {
        sender.setImage(UIImage(named:"pinkLike.png"), forState: .Selected)
    }
}
Run Code Online (Sandbox Code Playgroud)