这可能是一个简单的问题,但我似乎无法弄清楚如何去做。基本上我想做的就是在关闭之前淡出一个窗口:
[[window animator] setAlphaValue:0.0];
[window close];
没有[窗口关闭],这可以正常工作,但是当包含它时,窗口似乎在动画结束前关闭它(这显然不是我想要的); orderOut:,performClose:等似乎也是如此。有没有办法避免这种情况?
答案 0 :(得分:8)
[[window animator] setAlphaValue:0.0];
[window performSelector:@selector(performClose:) withObject:self afterDelay:[[NSAnimationContext currentContext] duration]];
答案 1 :(得分:3)
通过动画制作代理触发的隐式动画在正常播放时间运行。从当前的NSAnimationContext获取持续时间,并使用该间隔执行延迟清理/后动画操作。
答案 2 :(得分:3)
这是一个陈旧(但仍然很受欢迎)的问题,答案已过时。
等待动画师完成的正确方法是使用特殊的NSAnimationContext
类法completionHanler
,如下所示:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
// Start some animations here.
[[window animator] setAlphaValue:0.0];
} completionHandler:^{
// This block will be invoked when all of the animations started above have completed or been cancelled.
NSLog(@"All done!");
}];