这是我用来动画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)
函数中,如果动画为真,则会运行。
这里有什么明显的东西吗?
答案 0 :(得分:1)
答案很长:事实证明动画没有播放是因为使用石英在CAShapeLayer上方绘制了一些东西,所以我认为CAShapeLayer(应该是动画的)实际上是同一层的Quartz绘图。
简答:不要使用Quartz
绘制到图形上下文