iOSのNSNotificationCenterに関するステートメント

私はもう一つのアニメーションを開始しようとしています。

私はこのようなコールバックをチェックしています:

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

ImageAnimatorDidStopNotificationを受け取ったときに何かをトリガーするifステートメントを作成するにはどうすればよいですか?

ありがとう!

0

2 答え

animationDidStop を使用してアニメーションを連鎖させることは、非常に単純なシナリオで役立ちます。しかし、もっと複雑なものについては、すぐに扱いにくくなります。

Appleが推奨するもっと良いアプローチは、 CAMediaTiming プロトコルを利用することです。

彼らはセッション421「Core Animation Essentials」の WWDC 2011 ビデオの素晴らしい例を示しています。 。あなたは上のリンクでそれを見つけるでしょう。これにアクセスするには開発者アカウントが必要です。

ビデオの「通知とタイミング」ヒントの42:36への早送り。

4
追加された

あなたは何をしようとしているのか、どこに問題があるのか​​を知るのに十分なコードを投稿していません。

UIKitで2つ(またはそれ以上)のアニメーションを連結したい場合は、 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];
}
0
追加された