Если заявление на NSNotificationCenter в iOS - PullRequest
0 голосов
/ 28 октября 2011

Я пытаюсь запустить другую анимацию, когда она заканчивается.

Я проверяю обратные вызовы вроде этого:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(animationDidStopNotification:) 
name:ImageAnimatorDidStopNotification 
object:animatorViewController];

Как мне сделать оператор if, который позволяет мне запускать что-то при получении ImageAnimatorDidStopNotification?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Цепная анимация с использованием animationDidStop полезна для очень простых сценариев.Однако, для чего-то более сложного, это быстро становится громоздким.

Гораздо более приятный подход, рекомендованный Apple, заключается в использовании преимущества протокола CAMediaTiming.

Они дают прекрасный пример в видео WWDC 2011 в сеансе421 "Основные основы анимации".Вы найдете это в ссылке выше.Вам понадобится учетная запись разработчика, чтобы получить к ней доступ.

Перейдите в видео к 42:36 для подсказки «Уведомления и время».

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

Вы не опубликовали достаточно кода, чтобы узнать, что вы пытаетесь сделать и в чем проблема.

Если вы хотите связать две (или более) анимации с помощью UIKit, попробуйте использовать селектор setAnimationDidStopSelector:.

- (void)startAnimating
{
    [UIView beginAnimations: @"AnimationOne" context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationOneDidStop:finished:context:)];
    /* animation one instructions */
    [UIView commitAnimations];
}

- (void)animationOneDidStop:(NSString*)animationID 
                   finished:(NSNumber*)finished 
                    context:(void*)context
{
    [UIView beginAnimations: @"AnimationTwo" context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(animationTwoDidStop:finished:context:)];
    /* animation two instructions */
    [UIView commitAnimations];
}

- (void)animationTwoDidStop:(NSString*)animationID 
                   finished:(NSNumber*)finished 
                    context:(void*)context
{
    [UIView beginAnimations:@"AnimationThree" context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    /* animation three instructions */
    [UIView commitAnimations];
}
...