Время ожидания CABasicAnimation

Я просто переписал довольно большую анимацию из немой петли (стрельба drawRect: x раз), и это последнее, что я просто не могу понять.

Как я могу получить текущее прошедшее время моей анимации? Я знаю, как получить текущий CFTimeInterval (Есть ли способ приостановить CABasicAnimation?):

CFTimeInterval currentTime = [self.multiplierLayer convertTime:CACurrentMediaTime() fromLayer:nil];

Но как я могу использовать это, чтобы вычислить текущее прошедшее время с момента начала моей анимации? Кажется, что beginTime всегда 0.0, нужно ли мне установить момент начала анимации, а затем извлечь currentTime из beginTime?

Извините, если это что-то простое, что я пропускаю, я только начал использовать Core Animation вчера.:)

Edit: Установка beginTime - это не способ сделать это, действительно в убытке здесь.

Ответ 1

Возможно, более простой способ сделать то, что вы хотите, - это когда вы создаете свой CABasicAnimation, явным образом задайте время начала, например:

basicAnimation.beginTime = CACurrentMediaTime();

Позже вы можете выяснить, сколько времени прошло с помощью:

CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime;

И получите процент с помощью:

progress = elapsedTime / basicAnimation.duration;

(Код будет немного сложнее, если у вас есть timeOffset или что-то в этом роде.)