Swift: 如何设置CAShapeLayer()进度值

Swift: How to set CAShapeLayer() progress value

我刚刚创建了一个 IOS 应用程序,我在其中使用 CAShapeLayer() 实现了一个圆形进度条。 并且知道我想在每一秒内将进度值设置为 +1 这可能吗? 我只想创建一个像这样的进度条,每秒向前跳一个值: Like this

此致!

CAShapeLayer 具有动画 strokeStartstrokeEnd 属性。您可以直接设置它们,它们将自动设置动画,或者您可以像任何其他可设置动画的 CALayer 一样自己控制动画 属性:

let animation = CABasicAnimation(keyPath: "strokeEnd")
animation.fromValue = 0
animation.toValue = 1
animation.duration = 1
shape.add(animation, forKey: nil)

这将在 1 秒内填满进度指示器。

要使笔划结束动画起作用,您不能使用只是一个圆的 CGPath - 您需要一个有起点和终点的圆弧,如下所示:

let path = CGMutablePath()
path.addArc(
    center: CGPoint(x: 150, y: 150),
    radius: 100,
    startAngle: -0.5 * .pi,
    endAngle: 1.5 * .pi,
    clockwise: false
)