这是我用来制作CAShapeLayer动画的代码:

_progressBarLayer.strokeEnd = CGFloat(_progressToDrawForProgress(progress))

let progressAnimation = CABasicAnimation(keyPath: "strokeEnd")
progressAnimation.duration = CFTimeInterval(1.0)
progressAnimation.fromValue = CGFloat(self.progress)
progressAnimation.toValue = _progressBarLayer.strokeEnd
progressAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)

_progressBarLayer.addAnimation(progressAnimation, forKey: "progressAnimation")

我已经使用委托进行了测试,看动画是否可以播放。在正确的位置记录开始和停止位置。

此代码在setProgress(progress: CGFloat, animated: Bool)函数中,如果animation为true,则运行。

这里有什么明显的东西吗?

最佳答案

长答案:事实是,由于使用石英在CAShapeLayer上方绘制了一些东西,所以动画无法播放,所以我认为CAShapeLayer(应该进行动画处理)实际上是同一层的Quartz绘图。

简短答案:不要使用Quartz绘制图形上下文

关于ios - CAShapeLayer的strokeEnd不设置动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29056332/

10-13 03:57