有人可以在Swift中提供示例代码,以针对按钮的每个不同状态使用不同的矢量图形(UIBazierPath)实现自定义UIButton吗?

最佳答案

您可以将UIButton子类化,然后根据UIControlState进行绘制。例如:

class CustomButton: UIButton {
    override var selected: Bool {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override var highlighted:Bool{
        didSet {
            self.setNeedsDisplay()
        }
    }

    override func drawRect(rect: CGRect) {
       if self.state == .Selected
       {
            //Do complex vector drawing for selected state
            let roundRect = UIBezierPath(roundedRect: self.bounds, cornerRadius: 15.0)
            UIColor.greenColor().setFill()
            roundRect.fill()
        }
        else if self.state == .Normal
       {
            //Do complex vector drawing for normal state
            let rect = UIBezierPath(rect: self.bounds)
            UIColor.redColor().setFill()
            rect.fill()
        }
        else if self.state == .Highlighted
       {
            //Do complex vector drawing for highlighted state
            let roundRect = UIBezierPath(roundedRect: self.bounds, cornerRadius: 15.0)
            UIColor.greenColor().setFill()
            roundRect.fill()
        }
    }
}

正常时显示红色矩形,选中或突出显示时绿色圆形。

关于ios - 如何将矢量图形用于自定义UIButton的不同状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35095012/

10-12 00:27
查看更多