gpt4 book ai didi

cocoa - 减慢或暂停 NSAnimationContext

转载 作者:行者123 更新时间:2023-12-03 16:15:45 29 4
gpt4 key购买 nike

我有一个 NSAnimationContext (只是一个 ScrollView ),我想在光标进入 View 时减慢和/或暂停。我已经实现了这种情况何时发生的检测 - 现在我只需要弄清楚如何减慢已经在处理的动画的速度。我已经弄清楚如何使用 CALayers 执行此操作 - 但我需要使用动画代理代理,无法在此动画中使用多个 AppKit View ,因此核心动画将无法工作。有谁知道如何做到这一点?有没有办法跟踪 NSAnimationContexts 并稍后更改它们?

这是我的代码的一小部分,第一个 block 被循环调用。每当一个事件完成时,下一个事件就会开始。

[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 并且不调用完成处理程序?

最佳答案

我认为,如果您只是在不同的 NSAnimationContext 下再次通过 animator 代理设置该属性, 它将替换正在进行的动画。这类似于重新定位动画(例如到新的目的地)。

关于cocoa - 减慢或暂停 NSAnimationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110961/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com