1

每次单击按钮时,我都会显示心形。单击时,空心被填充,再次单击时,填充的心为空。

@IBOutlet weak var likeBtn: UIButton!

override func viewDidLoad() {
        super.viewDidLoad()

        likeBtn.addTarget(self, action: #selector(likeBtnClicked(_:)), for: .touchUpInside)
    }
@objc func likeBtnClicked(_ sender: UIButton) {
        DispatchQueue.main.async {
            if self.isSelected == false {
                sender.tintColor = .white
                self.isSelected = true
            } else if self.isSelected == true {
                sender.tintColor = .red
                self.isSelected = false
            }
        }
    }

在此处输入图像描述

单击按钮时,如何使上述心脏填充为红色?

我想要的是用一张图片创建两种情况。

1.点击按钮时心为红色 2.再次点击清心

4

1 回答 1

4

如果您的想法是使用单个图像,则需要将其用作字形。这意味着您必须每次删除颜色数据并使用正确的颜色对其进行着色。现在,如果您有一个无法使用的透明填充和彩色边框,因为您无法使用忽略原始边框颜色的颜色填充 UIImage。您在这里几乎没有选择。

选项 1 - 使用两个图像

let deselectedImage = UIImage(named: "heart")
let selectedImage = UIImage(named: "heart-filled")

选项 2 - 使用一张图像并使用渲染模式播放

let deselectedImage = UIImage(named: "heart")?.withRenderingMode(.alwaysOriginal)
let selectedImage = UIImage(named: "heart")?.withRenderingMode(.alwaysTemplate)
selectedImage.tintColor = .red

选项 3 - 使用图层边框颜色和渲染心情

与选项 2 相同,但您需要一个白色的心形图像,但在取消选择模式下,您还可以为其设置边框颜色。

于 2019-10-14T07:23:45.980 回答