gpt4 book ai didi

swift - 在不同状态下更改按钮图像的色调

转载 作者:行者123 更新时间:2023-11-28 06:56:00 25 4
gpt4 key购买 nike

您好,我有一个我无法解决的问题。我写了一个扩展程序,可以帮助我为透明 PNG 着色

extension UIButton {
func setImageColorForState(image: UIImage, color: UIColor, forState: UIControlState) {
let temp = image.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
setImage(temp, forState: forState)
tintColor = color
}
}

我使用的扩展如下:

btn.setImageColorForState(originalImage!, color: UIColor.yellowColor(), forState: .Highlighted)
btn.setImageColorForState(originalImage!, color: UIColor.grayColor(), forState: .Normal)

不知何故,它只接受最后一个状态。所以在这种情况下,高亮状态会被忽略。我在这里缺少什么?

最佳答案

这可以通过子类化 UIButton 并覆盖 isHighlighted 变量来完成,类似于此处接受的答案(https://stackoverflow.com/a/17602296/4673023)。

    override open var isHighlighted: Bool {
didSet {
self.tintColor = isHighlighted ? UIColor.red : UIColor.gray
}
}

或者,等价地:

    override open var isHighlighted: Bool {
didSet {
if (isHighlighted) { self.tintColor = UIColor.red }
else { self.tintColor = UIColor.gray }
}

这是一个老问题,但我还是写了这个,以防有人遇到类似的问题。已使用 Swift 3.2 和 4.0 进行测试。


虽然目前可以跳过子类化部分并对 UIButton 扩展做同样的事情,但不应该这样做 (https://docs.swift.org/swift-book/LanguageGuide/Extensions.html)。

关于swift - 在不同状态下更改按钮图像的色调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33628069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com