Swift 使用 CAShapeLayer() 和 UIBezierPath 绘制并调整圆圈大小

Swift draw and RESIZE circle with CAShapeLayer() and UIBezierPath

我想画一个带动画的圆,动画从 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

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

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

两者都可以让您控制大小,只是参数不同。

如果您想改变用 init(arcCenter:radius:startAngle:endAngle:clockwise:) 绘制的圆弧的大小,请改变半径参数。

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

将是用

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

(顺便说一句,如果起始角是-π/2,结束角不应该是3π/2,所以圆弧是360°(或2π)而不是450°?)