Cocoa - 核心动画 - 如何停止代理动画?

Sir*_*tty 10 cocoa core-animation nswindow

我有一个NSWindow,我使用动画代理在自定义时间内从隐形到完全不透明淡入淡出:

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // Custom timing, 1 sec.
[[myWindow animator] setAlphaValue: 1.0f];
[NSAnimationContext endGrouping];
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试设置窗口的可见性,而在动画出发,动画没有停止.在以下示例中,窗口将短暂显示为0.5可见性,但随后将继续设置动画.

例如

[myWindow setAlphaValue: 0.5f];  // Animation continues after calling this.
Run Code Online (Sandbox Code Playgroud)

问:如何停止动画?

谢谢.

Nic*_*ley 8

我有一个应用程序,几乎做到这一点(覆盖Shroud窗口的菜单栏)并回答这个问题,我发现它有一个错误 - 虽然我的动画是0.1秒,所以它可能永远不会在实践中被触发.但是谢谢.:-)

0的动画持续时间属于特例,表现得就像直接设置阿尔法值,所以你不能使用它们,但你可以使用一个非常小的时间,这样的事情,这将创造一个新的动画取代在 - 进步一:

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.01];
[[myWindow animator] setAlphaValue:0.5];
[NSAnimationContext endGrouping];
Run Code Online (Sandbox Code Playgroud)