1

なぜこれほど難しいのかはわかりませんが、基本的には画面全体でNSViewをアニメーション化し、アニメーション化が完了したら、そのNSViewを削除します。しかし、私はこれを行う方法についての参照をまったく見つけることができないようです。誰か助けてもらえますか?

このようにアニメーションを始めています

NSRect frame = blob.frame;
frame.origin.x = animationStopX;
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:timeToDisappear];
[[blob animator] setFrame:frame];
[NSAnimationContext endGrouping];

完了した後など、これからコールバックを取得する方法はありません。

4

2 に答える 2

7

ステートメントの直後にbeginGrouping、次を追加します。

[[NSAnimationContext currentContext] setCompletionHandler:^{
        [self.blob removeFromSuperview];
    }];

setCompletionHandler:NSAnimationContextクラス内のメソッドです。

于 2012-04-28T04:02:00.533 に答える
1

10.6以下(したがってNSAnimationContextのcompletionHandler)がオプションではない場合、このアプローチはブロックを使用するだけで、 10.6以降で機能します。

   double delayInSeconds = 1.0;
   dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
   dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
      [mySubView removeFromSuperview];
   });
于 2013-04-26T11:47:51.967 に答える