我有一个NSWindow,我使用 animator 代理在自定义时间内从隐形到完全不透明淡入淡出:
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // Custom timing, 1 sec.
[[myWindow animator] setAlphaValue: 1.0f];
[NSAnimationContext endGrouping];
但是,如果我尝试设置窗口的可见性而动画正在进行,则动画不会停止。在以下示例中,窗口将以0.5的可见度短暂显示,但随后将继续设置动画。
e.g。
[myWindow setAlphaValue: 0.5f]; // Animation continues after calling this.
问。如何停止动画?
感谢。
答案 0 :(得分:8)
我有一个应用程序几乎完成了这个(Shroud中覆盖窗口的菜单栏)并回答了这个问题我发现了一个错误 - 虽然我的动画是0.1秒所以它可能永远不会是在实践中触发。但是谢谢。 : - )
0s的动画持续时间是特殊的,其行为就像直接设置alpha值一样,所以你不能使用它们,但是你可以使用非常小的持续时间,就像这样,这将创建一个取代的新动画正在进行中的一个:
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.01];
[[myWindow animator] setAlphaValue:0.5];
[NSAnimationContext endGrouping];
答案 1 :(得分:0)
另一种方法是通过设置animations
属性来提供具有CABasicAnimation
属性的自定义动画类(例如delegate
)。然后可以使用相应的delegate methods来跟踪和操纵实际的动画。