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