iOS 2个颜色的虚线,中间还有透明的,三个颜色虚线

108 阅读1分钟
class ThreeColorLineView: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setup()
    }

    private func setup() {
        backgroundColor = .clear
        
        let path = CGMutablePath()
        path.move(to: CGPoint(x: 0, y: 0))
        path.addLine(to: CGPoint(x: bounds.width, y: 0))
        addOneColorDasheLine(path: path, color: UIColor.hexColor("#77B4DF"))
        
        let path2 = CGMutablePath()
        path2.move(to: CGPoint(x: 12, y: 0))
        path2.addLine(to: CGPoint(x: bounds.width, y: 0))
        addOneColorDasheLine(path: path2, color: UIColor.hexColor("#EB7B71"))
    }

    private func addOneColorDasheLine(path: CGPath, color: UIColor) {
        let dashLayer = CAShapeLayer()
        dashLayer.path = path
        dashLayer.fillColor = UIColor.clear.cgColor
        dashLayer.strokeColor = color.cgColor
        dashLayer.lineWidth = 1
        dashLayer.lineDashPattern = [8, 16] // 每个虚线段的长度
        layer.addSublayer(dashLayer)
    }
}