iOS(Swift):按下时调暗UIButton

时间:2018-07-02 09:23:11

标签: ios swift uibutton

我有一个UIButton子类,其生成如下:

class MoreOptionsButton: UIButton {

    override func draw(_ rect: CGRect) {

        let path = UIBezierPath(ovalIn: rect)
        UIColor.red.setFill()
        path.fill()

        let r = CGRect(x: rect.width * 0.5 - rect.width * 0.15 * 0.5, y: rect.height * 0.5 - rect.height * 0.15 * 0.5, width: rect.width * 0.15, height: rect.height * 0.15)
        var circlePath = UIBezierPath(ovalIn: r)
        UIColor.white.setFill()
        circlePath.fill()

        circlePath = UIBezierPath(ovalIn: r.offsetBy(dx: -rect.width / 4.0, dy: 0.0))
        UIColor.white.setFill()
        circlePath.fill()

        circlePath = UIBezierPath(ovalIn: r.offsetBy(dx: rect.width / 4.0, dy: 0.0))
        UIColor.white.setFill()
        circlePath.fill()

    }

}

看起来像这样:

enter image description here

但是,当我在模拟器中按下此按钮时,它不会像普通的System类型的按钮那样自动变暗。 请问如何实现此效果?

2 个答案:

答案 0 :(得分:7)

在UIButton自定义类中添加以下代码:

override var isHighlighted: Bool {
    didSet {
        alpha = isHighlighted ? 0.4 : 1
    }
}

enter image description here

答案 1 :(得分:0)

有按钮选择和未选择状态两种状态,您可以为这两种状态分配图像。