ios - 关于uiButton点击填空心的问题

标签 ios swift

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

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

enter image description here

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

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

1.点击按钮时心被红色填满
2.再次点击清心

最佳答案

如果您的想法是使用单个图像,则需要将其用作字形。这意味着您必须每次都删除颜色数据并使用正确的颜色对其进行着色。现在,如果您有一个无法使用的透明填充和彩色边框,因为您无法使用忽略原始边框颜色的颜色填充 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 相同,但您需要一个白色的心形图像,但在取消选择模式下,您还可以为其设置边框颜色。

关于ios - 关于uiButton点击填空心的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58371693/

相关文章:

ios - 为什么double类型的主窗口是可选的?

ios - Swift:模型结构,使用可选与空值初始化

swift - 将 INNER JOIN 查询从 SQLite 转换为 SQLite.Swift

ios - Swift:类AppDelegate中的线程1信号SIGABRT:UIResponder,UIApplicationDelegate

objective-c - 识别在 Swift 中的自定义 listView 单元格中按下的按钮

ios - 如何在 Objective-C 中使用多个参数调用 Swift 初始化方法

ios - 将 iPhone 应用程序上传到 AppStore 的步骤

ios - 在 viewDidLoad 中设置 UITabBar 类型的选项卡栏中的默认项目(不是 UITabBarViewController)

ios - NSURLSession().dataTaskWithRequest(...) 不能抛出?

swift - 变量 - didSet 和 willSet