3

アニメーション終了後にdoSomethingElseを実行したい。もう 1 つの制約は、アニメーション コードの持続時間が異なる可能性があることです。どうやってやるの?ありがとう!

-(void) doAnimationThenSomethingElse {
  [self doAnimation];
  [self doSomethingElse];
}

たとえば、これは機能しません。

animationDuration = 1;
[UIView animateWithDuration:animationDuration
    animations:^{
      [self doAnimation];
    } completion:^(BOOL finished) {
      [self doSomethingElse];
    }
];
4

5 に答える 5

24

アニメーションの作成者でない場合は、トランザクション完了ブロックを使用して、アニメーションが終了したときにコールバックを取得できます。

[CATransaction setCompletionBlock:^{
     // doSomethingElse
}];
// doSomething
于 2013-05-03T22:54:13.553 に答える
0

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

UIView のドキュメントがあります。

ブロックを使用してビューをアニメーション化する

ビューのアニメーション化

ビューをアニメーション化する方法を説明するページのさまざまな部分にジャンプするハイパーリンクを表示するには、必要なものは「ブロックを使用したビューのアニメーション化」の下にあり、メソッドの名前を読むと自明になります

于 2013-05-03T22:01:31.767 に答える
0

あなたのコメントから私はあなたをお勧めします:

-(void) doAnimation{
    [self setAnimationDelegate:self];
    [self setAnimationDidStopSelector:@selector(finishAnimation:finished:context:)];
    [self doAnimation];
}

- (void)finishAnimation:(NSString *)animationId finished:(BOOL)finished context:(void *)context {
    [self doSomethingElse];
}
于 2013-05-03T22:34:31.320 に答える