Как вложить несколько анимаций CA?

Как вложить несколько анимаций CA, как это делает UIView animateWithDuration? Например, мне нужно анимировать 6 анимаций, где каждая следующая анимация идет после предыдущей. Итак, с UIView animateWithDuration каждая следующая анимация вызывается из полного блока. Позволяет ли CA использовать блоки и т. д.? Если нет, то как выполнять вложенные последовательные анимации?


person Centurion    schedule 16.08.2011    source источник


Ответы (2)


CAAnimation не имеет блочного API, но вы можете использовать его метод делегата animationDidStop:finished: для объединения нескольких анимаций в цепочку.

Если вы делаете это часто, вы можете написать для этого собственную оболочку на основе блоков.

person omz    schedule 16.08.2011
comment
На данный момент не так сложно написать собственную оболочку :) Один вопрос об использовании делегата: реализация метода animationDidStop:finished: делегата будет запускать его для всех анимаций на экране (включая анимацию UIView) или только для анимаций CA? - person Centurion; 16.08.2011
comment
Только для анимаций, для которых вы указали себя в качестве делегата. - person omz; 16.08.2011

В качестве альтернативы ответу omz вы можете настроить объекты NSTimer для запуска последовательных частей анимации.

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(legOne:) userInfo:nil repeats:NO];
[NSTimer scheduledTimerWithTimeInterval:4.0 target:self selector:@selector(legTwo:) userInfo:nil repeats:NO];

Где legOne: — метод, выполняющий первую часть анимации и т. д.

person Mr. Berna    schedule 16.08.2011