Делегат CABasicAnimation для анимацииDidStop?

Я следую примеру внизу страницы, чтобы вызвать функцию animationDidStop.

http://www.informit.com/articles/article.aspx?p=1168314&seqNum=2

Автор говорит:

У меня есть объект, который специально предназначен для делегата анимации, и все, что он делает, это привязка к целевому объекту, принятие сообщения animationDidStop: и затем освобождение.

Это говорит о том, что вы не должны делать:

[animation setDelegate:self];

Я новичок в программировании приложений, может кто-нибудь изложить, как я могу это сделать? Или отправьте мне ссылку, где это объясняется.

Ответы

Ответ 1

Реализовать:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag

для объекта-делегата. Вы также можете реализовать:

- (void)animationDidStart:(CAAnimation *)theAnimation

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

Для получения дополнительной информации см. раздел "Делегаты": http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CAAnimation_class/Introduction/Introduction.html

Ответ 2

Иногда установка фактического значения вашего слоя на значение toValue при завершении анимации. Если это более сложная анимация, такая как анимация цветов CAGradientLayer, это необходимо.

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
  self.gradientLayer.colors = (NSArray *)((CABasicAnimation*)theAnimation).toValue;
}

Ответ 3

Просто установите

[UIView setAnimationDelegate:self];

не будет вызывать какие-либо из методов делегирования анимации, когда анимация начинается или заканчивается.

Эта проблема может быть решена одним из следующих обходных решений.

1) В разделе реализации добавьте

@implementation MyViewWithAnimations <UIApplicationDelegate>


2) В вашей анимации begin-commit-block добавьте

[UIView setAnimationWillStartSelector:@selector(animationDidStart:)];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];


3) Сделайте то, что предлагает Apple, и используйте вместо этого методы анимации на основе блоков.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html