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's 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 回答