在Circle上使用UIBeizerPath

时间:2016-05-06 15:30:59

标签: ios xcode swift geometry

我想创建一个可以按百分比切割的圆,例如,0.25是圆的1/4。

到目前为止,这是我的代码:

let circlePath = UIBezierPath(arcCenter: CGPoint(x: 100,y: 300), radius: CGFloat(20), startAngle: CGFloat(M_PI + M_PI_2), endAngle:CGFloat(90 * M_PI / 180, clockwise: true)

        let shapeLayer = CAShapeLayer()
        shapeLayer.path = circlePath.CGPath

        //change the fill color
        shapeLayer.fillColor = UIColor.clearColor().CGColor
        //you can change the stroke color
        shapeLayer.strokeColor = UIColor.redColor().CGColor
        //you can change the line width
        shapeLayer.lineWidth = 3.0

        view.layer.addSublayer(shapeLayer)

在startAngle中,我写了CGFloat(M_PI + M_PI_2),因为圆圈的起点并非从0开始,但如下图所示:

enter image description here

endAngle行中我写了CGFloat(90 * M_PI / 180),因为从度到弧度的公式是:度* pi / 180

BUT!在视图中,我获得了圆圈的一半而不是圆圈的四分之一:

enter image description here

我的endAngle公式是不是错了?

2 个答案:

答案 0 :(得分:2)

我认为您想要的是您的起始角度为0,结束角度为90 * PI / 180

你现在拥有的曲线是从底部270开始,又名M_PI + M_PI / 2并且变为90(90 * M_PI / 180)

//你可能想要的是你的endAngle =(90 * M_PI / 180)+ startAngle,也就是你开始时的四分之一,我不确定你想要的那个四分之一的圆圈

答案 1 :(得分:0)

因为在iOS中,圆圈的顶部从270度开始,因此startAngle是:

startAngle: CGFloat(M_PI + M_PI_2)

endAngle是:

endAngle:CGFloat((360 * 0.25 - 90)

而不是0.25,您可以将其更改为0到1之间的任何数字(例如:如果您想要将圆的一半填满,请将其更改为0.5)