【问题标题】:Circular crown with UIBezierPath带有 UIBezierPath 的圆形表冠
【发布时间】:2020-08-02 12:55:50
【问题描述】:

我正在尝试使用 UIBezierPath 绘制圆形冠。我可以画两个不同半径的圆:

let bezierCrown = UIBezierPath()
bezierCrown.addArc(withCenter: center,
                       radius: raidus1,
                   startAngle: 0,
                     endAngle: CGFloat.pi*2,
                    clockwise: true)
bezierCrown.move(to: CGPoint(x: center.x+distancia2, y: center.y))
bezierCrown.addArc(withCenter: center,
                       radius: raidus2,
                   startAngle: 0,
                     endAngle: CGFloat.pi*2,
                    clockwise: true)

但是当我填写时:

UIColor.green.setFill()
bezierCrown.fill()

一切都已填满:image。 我只想要冠冕。

【问题讨论】:

    标签: swift uibezierpath


    【解决方案1】:

    您需要将 fillRule 设置为 evenOdd

    let center = CGPoint(x: 200, y: 400)
            let raidus1:CGFloat = 100
            let raidus2:CGFloat = 80
            
            let bezierCrown = UIBezierPath()
            bezierCrown.addArc(withCenter: center,
                               radius: raidus1,
                               startAngle: 0,
                               endAngle: CGFloat.pi*2,
                               clockwise: true)
            bezierCrown.move(to: CGPoint(x: center.x+raidus2, y: center.y))
            bezierCrown.addArc(withCenter: center,
                               radius: raidus2,
                               startAngle: 0,
                               endAngle: CGFloat.pi*2,
                               clockwise: true)
            
            let shapeLayer = CAShapeLayer()
            shapeLayer.path = bezierCrown.cgPath
            shapeLayer.fillColor = UIColor.blue.cgColor
            shapeLayer.strokeColor = UIColor.red.cgColor
            shapeLayer.fillRule = .evenOdd
            
            view.layer.addSublayer(shapeLayer)
    

    【讨论】:

    • 或者当第二个 UIBezierPath 放在顶部时,bezierCrown.append(secondBezier)bezierCrown.usesEvenOddFillRule = true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多