更改禁用按钮的色调颜色将不起作用

时间:2019-05-14 10:07:03

标签: ios swift

我有一个UIButton已被禁用。 UIButton旁边有一个图像作为图标。我认为是因为它已禁用,因此图像的色调是灰色的。

我已经尝试将情节提要中的按钮设置为自定义,然后在此处更改其颜色,这是行不通的。

我还尝试了以下代码:

@IBOutlet weak var drivenKmDisplay: UIButton!

let color = UIColor(red: 0/255, green: 22/255, blue: 60/255, alpha: 1)

func setDrivenKm(drivenKm: Int) {
        drivenKmDisplay.isEnabled = false
        let string = String(drivenKm) + " km"
        drivenKmDisplay.setTitle(string, for: .disabled)

        let icon = UIImage(named: "timeline")!
        drivenKmDisplay.setImage(icon, for: .normal)
        drivenKmDisplay.imageView?.contentMode = .scaleAspectFit
        drivenKmDisplay.imageEdgeInsets = UIEdgeInsets(top: 0, left: -15, bottom: 0, right: 0)

        drivenKmDisplay.tintColor = color
    }

1 个答案:

答案 0 :(得分:1)

在启用/禁用按钮时,您必须将按钮子类化才能更改tintColor

class MyButton: UIButton {
    override var isEnabled: Bool {
        didSet {
            tintColor = isEnabled ? .blue : .red
        }
    }
}

要确保按钮中的图像变为所需的色调颜色,请将图像的渲染模式设置为alwaysTemplate。您可以在代码中或资产目录中进行此操作。

let icon = UIImage(named: "timeline")?.withRenderingMode(.alwaysTemplate)

您还需要确保按钮在禁用时不会调整图像。

drivenKmDisplay.adjustsImageWhenDisabled = false