【问题标题】:Change tint color of disabled button won't work更改禁用按钮的色调颜色不起作用
【发布时间】:2019-05-14 19:29:31
【问题描述】:

我有一个 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
    }

【问题讨论】:

  • 您可以将UIButtontextColor 配置为启用/禁用状态而不是tintColor

标签: ios swift


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多