使用CAShapeLayer()和UIBezierPath

时间:2018-10-16 18:32:00

标签: swift uibezierpath cashapelayer

我想用动画画一个圆,动画从12点开始,旋转360度。一切正常,但我无法调整圆圈的大小。

如果我使用UIBezierPath,则可以定义起点(“ startAngle:-CGFloat.pi / 2”)。

let shapeLayer = CAShapeLayer()
let center = progressView.center
    let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
    shapeLayer.path = circularPath.cgPath

如果我使用UIBezierPath(ovalIn:...),我可以调整大小。但是我想同时使用两者,还是要保持起始角度和大小呢?

shapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 8, y: 78, width: 70, height: 70)).cgPath

1 个答案:

答案 0 :(得分:1)

对于第一个路径代码版本,radius参数确定圆的大小。

在第二个版本中,它将椭圆形(可以是圆形,也可以不是圆形)绘制到矩形框中。

两者都可以通过不同的参数来控制尺寸。

如果要更改用ID COMPANY JAN FEB MAR... 2 COMPANY_A 23.5 26 17 绘制的圆弧的大小,请更改半径参数。

绘制的圆圈
init(arcCenter:radius:startAngle:endAngle:clockwise:)

将是用

绘制的圆的两倍大
let circularPath = UIBezierPath(arcCenter: center, 
  radius: 100,  
  startAngle: -CGFloat.pi / 2,  
  endAngle: 2 * CGFloat.pi,  
  clockwise: true)

(顺便说一句,如果起始角度为-π/ 2,终止角度不应该为3π/ 2,那么圆弧是360°(或2π)而不是450°?)