我想创建一个可以按百分比切割的圆,例如,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开始,但如下图所示:
在endAngle
行中我写了CGFloat(90 * M_PI / 180)
,因为从度到弧度的公式是:度* pi / 180 。
BUT!在视图中,我获得了圆圈的一半而不是圆圈的四分之一:
我的endAngle公式是不是错了?
答案 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)