Swift: 如何设置CAShapeLayer()进度值
Swift: How to set CAShapeLayer() progress value
我刚刚创建了一个 IOS 应用程序,我在其中使用 CAShapeLayer() 实现了一个圆形进度条。
并且知道我想在每一秒内将进度值设置为 +1 这可能吗?
我只想创建一个像这样的进度条,每秒向前跳一个值:
Like this
此致!
CAShapeLayer
具有动画 strokeStart
和 strokeEnd
属性。您可以直接设置它们,它们将自动设置动画,或者您可以像任何其他可设置动画的 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
)
我刚刚创建了一个 IOS 应用程序,我在其中使用 CAShapeLayer() 实现了一个圆形进度条。 并且知道我想在每一秒内将进度值设置为 +1 这可能吗? 我只想创建一个像这样的进度条,每秒向前跳一个值: Like this
此致!
CAShapeLayer
具有动画 strokeStart
和 strokeEnd
属性。您可以直接设置它们,它们将自动设置动画,或者您可以像任何其他可设置动画的 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
)