Как отменить анимацию для определенного контекста и animationID? - PullRequest
1 голос
/ 22 августа 2009

У меня есть анимация, которую я запускаю так:

[UIView beginAnimations:@"doThis" context:self];
[UIView setAnimationDuration:1.5f];
[UIView setAnimationDelay:2.5f];

Теперь проблема в том, что эта анимация запускается через 2,5 секунды. Но тем временем что-то может случиться, и я больше не хочу анимацию. Тем не менее, CA просто оживит эту вещь через 2,5 секунды, что бы ни случилось. Как я мог сказать «нет, спасибо, не оживлять»?

У меня есть другие анимации в другом контексте и animationID, поэтому я не хочу просто удалять все анимации из приложения. Какой самый чистый способ достижения этого? Просто запустить еще одну бессмысленную анимацию с тем же контекстом и animationID и старыми целями?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Если вы переустановите свойства, которые в данный момент анимируются, это должно убить анимацию. Если у вас установлен делегат анимации / didStopSelector, метод будет вызываться с kCFBooleanFalse в качестве параметра «закончено» в этом случае.

1 голос
/ 25 августа 2009

Здесь есть еще один связанный вопрос:

Отменить анимацию UIView?

Еще одна вещь, которую вы можете сделать, это поместить код анимации в метод и затем использовать:

      [self performSelector:@selector(animateMethod) withObject:nil afterDelay:2.5];

Затем вы можете добавить проверку в начале «animateMethod», чтобы увидеть, должна ли анимация все еще выполняться Это, однако, не поможет, если вы хотите отменить анимацию во время ее работы.

...