我正在尝试为我的应用创建一个“喜欢”按钮。当我按下按钮时,我想让它变成第二张图像,当我再次按下它时,我又把它改回第一张图像。
这是我的代码:
@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)