Можно ли контролировать временную шкалу CAAnimation? - PullRequest
4 голосов
/ 25 октября 2011

У меня сложная анимация, которая обычно запускается сама по себе, управляемая определенной CAMediaTimingFunction. Это отлично работает.

Теперь я хочу управлять временем (строкой) той же анимации, используя внешнее значение, например, из ползунка или распознавателя жестов. Другими словами, я не хочу, чтобы «часы» управляли временной шкалой, а были ползунком, поэтому можно перемещаться с ним вперед и назад и «замораживать» анимацию, устанавливая ползунок на определенное значение.

Возможно ли это? Если да, то как?

1 Ответ

0 голосов
/ 25 октября 2011

Это возможно (и довольно просто), но я попробовал это только в качестве эксперимента (для сложной анимации, управляемой распознавателем жестов), поэтому я хотел бы услышать, достаточно ли этого решения:

Вам нужно установить скорость вашей анимации на 0 и смещение по времени до момента времени, к которому вы хотите перейти, например,

CABasicAnimation* animation = [CABasicAnimation ...];
animation.speed = 0;
animation.duration = 1;
animation.timeOffset = 0.5;

заставит анимацию перейти к точке, которая была бы через полсекунды.

Теперь вы не можете манипулировать объектами CAAnimation после того, как они были добавлены в слой, поэтому вам нужно будет добавлять новую анимацию каждый раз, когда изменяется смещение (и не забывайте старую, не забывайте;) .

...