UIButton自定义背景颜色突出显示和禁用

时间:2018-03-10 16:45:26

标签: ios swift uibutton

我有使用class customButton的按钮。此按钮功能在10次触摸后自动禁用。

我有问题,在最后一次触摸它将从isHighlighted而不是isEnabled获取颜色。你会如何解决这个问题?

非常感谢。

class customButton: UIButton {
override open var isHighlighted: Bool {
    didSet {
      //Set colors for Highlighted & Unhighlighted
        backgroundColor = isHighlighted ? UIColor(named: "RedAlpha")! : UIColor(named: "Red")!
    }
}
override open var isEnabled: Bool {
    didSet {

        backgroundColor = isEnabled ? UIColor(named: "Red")! : UIColor(named: "Dis")!
    }
}
}

2 个答案:

答案 0 :(得分:2)

根据按钮的上次状态更改,它可能具有不同的颜色。你可以试试这个。

class customButton: UIButton {
    override open var isHighlighted: Bool {
        didSet {
            updateBackgroundColor()
        }
    }
    override open var isEnabled: Bool {
        didSet {
           updateBackgroundColor()
        }
    }
    func updateBackgroundColor() {
        //Set colors for Highlighted & Unhighlighted
        if isEnabled {
            backgroundColor = isHighlighted ? UIColor(named: "RedAlpha")! : UIColor(named: "Red")!
        } else {
            backgroundColor = UIColor(named: "Dis")!
        }
    }
}

答案 1 :(得分:0)

据我了解你的问题,正确的方法是改变isEnabled的颜色。但是,如果您想要撰写有问题的内容,请在最后一次触摸设置isHighlightedtrue并将isUserInteractionEnabled设置为false,以便它会忽略用户事件。< / p>

customButton.isHighlighted = true
customButton.isUserInteractionEnabled = false