Инсульт CAShapeLayer's не анимирует
Это код, который я использую для анимации моего 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 ответ
Длинный ответ: оказывается, что анимация не воспроизводилась из-за того, что что-то рисовалось над CAShapeLayer с использованием кварца, так что я думал, что CAShapeLayer (который должен быть анимирован) на самом деле был изображением Кварца того же слоя.
Краткий ответ: не рисуйте в графическом контексте с Quartz