CAShapeLayer的strokeEnd没有动画

时间:2015-03-15 01:39:50

标签: ios animation cabasicanimation cashapelayer

这是我用来动画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)函数中,如果动画为真,则会运行。

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

1 个答案:

答案 0 :(得分:1)

答案很长:事实证明动画没有播放是因为使用石英在CAShapeLayer上方绘制了一些东西,所以我认为CAShapeLayer(应该是动画的)实际上是同一层的Quartz绘图。

简答:不要使用Quartz

绘制到图形上下文