Инсульт 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

Другие вопросы по тегам