3
我有一个NSAnimationContext(只是一个滚动视图),我希望在光标进入视图时减慢和/或暂停。我已经在这种情况发生时实施了检测 - 现在我只需要弄清楚如何减慢已经在进行的动画。我已经想出了如何用CALayers做到这一点 - 但我需要使用动画代理无法在此动画中使用多个AppKit视图,因此Core Animation将无法工作。有谁知道如何做到这一点?有没有办法跟踪NSAnimationContexts,然后再改变它们?减速或暂停NSAnimationContext
这是我的代码的一个小节,第一个块被循环调用。每当一个情绪完成时,下一个就会开始。
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
context.duration = pixels/speed;
[[currentTweetView animator] setFrame:endRect];
} completionHandler:^{
[currentTweetView removeFromSuperview];
currentTweetView = nil;
[self nextAnimationWithAnimationIndex:currentIndex];
}];
这是mouseEntered:方法中的代码。无论何时调用这个函数,completionHandler都不会被调用并且应用程序冻结。
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
[[[self.subviews objectAtIndex:0] animator] setFrame:finalRect];
context.duration = 100.0;
} completionHandler:^{
NSLog(@"done");
}];
此外,有没有办法提前结束一个NSAnimationContext,而不是调用完成处理程序?
我刚刚试过这个,应用程序冻结,第二个动画从未发生,应用程序只是冻结。 – xizor 2012-04-11 20:59:49
奇怪。你能证明你在做什么吗? – 2012-04-11 21:10:56
你可以尝试删除完成处理程序吗?这会改变什么吗?另外,在第二种情况下,您不想在执行'-setFrame之前设置持续时间:? – 2012-04-12 15:51:37