这是我用来制作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/