【问题标题】:How to highlight a custom UIButton that has no text or background?如何突出显示没有文本或背景的自定义 UIButton?
【发布时间】:2018-07-15 04:20:58
【问题描述】:

我正在尝试制作自定义 UIButton,因为我想绘制自己的矢量按钮图标,而不是依赖文本字符或位图图像。

所以...我试过这个:

import UIKit

@IBDesignable
class CustomPlusButton: UIButton {

/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
    // Drawing code
}
*/


func myPlusSign() -> UIBezierPath {

    //vars to factor out later
    let G = bounds.width / 5

    let plusPath = UIBezierPath()


    let startPoint = CGPoint(x:2*G,y:G)

    plusPath.move(to: startPoint)
    plusPath.addLine(to: CGPoint(x:2*G,y:2*G))
    plusPath.addLine(to: CGPoint(x:G,y:2*G))
    plusPath.addLine(to: CGPoint(x:G,y:3*G))
    plusPath.addLine(to: CGPoint(x:2*G,y:3*G))
    plusPath.addLine(to: CGPoint(x:2*G,y:4*G))
    plusPath.addLine(to: CGPoint(x:3*G,y:4*G))
    plusPath.addLine(to: CGPoint(x:3*G,y:3*G))
    plusPath.addLine(to: CGPoint(x:4*G,y:3*G))
    plusPath.addLine(to: CGPoint(x:4*G,y:2*G))
    plusPath.addLine(to: CGPoint(x:3*G,y:2*G))
    plusPath.addLine(to: CGPoint(x:3*G,y:G))
    plusPath.addLine(to: startPoint)

    plusPath.close()

    plusPath.fill()

    return plusPath



}

override func draw(_ rect: CGRect) {

    let path = myPlusSign()

    path.stroke()

}
}

我将一个 Button 实例拖到情节提要中并将其类型更改为我的自定义类。

在情节提要中,当我运行应用程序时,它看起来很棒,就矢量的外观以及它如何适合按钮空间而言,但它不会像普通按钮那样在触摸时突出显示。

据我了解,通常您会使用属性检查器的“状态配置”部分来控制突出显示时的行为,但它只允许控制文本颜色、阴影颜色、图像或背景。

我的自定义图标不是这些东西...那我该如何参考呢? draw(_rect) 的输出称为什么,如何突出显示?

编辑:我也希望它像普通按钮一样淡入正常状态,因此希望有某种方法可以合并/重用普通按钮的突出显示行为而不完全覆盖它?

谢谢!

【问题讨论】:

    标签: swift xcode uibutton customization highlight


    【解决方案1】:

    对于一个可能的解决方案,您可以在您的按钮被覆盖的isHighlighteddidSet 中修改按钮的 alpha。

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

    【讨论】:

    • 如果你想要一个淡入淡出的动画,你可以使用一个动画块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多