Есть ли способ достичь того, что имеет свойство анимации, начиная анимацию в определенный момент времени, но без «обертывания» поведения?Запуск анимации при заданном смещении
У меня есть две анимации (в двух разных слоях):
// This is the animation of the stroke of a circle
let progressAnim = CABasicAnimation(keyPath: "strokeEnd")
progressAnim.duration = duration
progressAnim.fromValue = 0
progressAnim.toValue = 1
progressAnim.fillMode = kCAFillModeBackwards
progressAnim.timeOffset = elapsed
// This is the animation of a pointer that follow the same circle as above
let arrowAnim = CAKeyframeAnimation(keyPath: "position")
arrowAnim.duration = duration
arrowAnim.rotationMode = kCAAnimationRotateAuto
arrowAnim.path = arrowPath.CGPath
arrowAnim.fillMode = kCAFillModeBackwards
arrowAnim.timeOffset = elapsed
Это запускает анимацию на разыскиваемого прогресса, но, когда он достигает того, что, как предполагается, в конце концов, он начинает снова и продолжается в течение оставшаяся продолжительность. Я понимаю, что это так, как указано timeOffset
, но я надеялся, что можно как-то добиться того же без обертки.
Вот что я пробовал в первую очередь, но две анимации не синхронизируются, когда я вычисляю 'strokeEnd' для круга и' startAngle' для анимации стрелок. Они начинаются и заканчиваются в одно и то же время, но между ними поведение несколько ... buggy ... – NilsH
Это тоже не сработает. –