简体   繁体   English

iOS(Swift):按下时调暗UIButton

[英]iOS (Swift): Dimming UIButton when pressed

I have a UIButton subclass that is generated as follows: 我有一个生成的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()

    }

}

and looks like this: 看起来像这样:

在此处输入图片说明

However, when I press down on this button in the simulator it does not automatically dim like a normal System type button would. 但是,当我按下模拟器中的此按钮时,它不会像正常的“ System类型”按钮那样自动变暗。 How do I achieve this effect, please? 请问我如何达到这种效果?

Add below code in your UIButton custom class: 在您的UIButton自定义类中添加以下代码:

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

在此处输入图片说明

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM