动画setHidden:在NSView上通过Cocoa绑定

时间:2011-02-02 21:43:22

标签: cocoa interface-builder core-animation calayer cocoa-bindings

我目前正在对一个项目进行最后的修改。

很多(如果不是全部)UI逻辑当前依赖于Cocoa Bindings。 一些用户界面元素(标签,按钮等)定义了“隐藏”绑定。触发某些事件时,会切换这些元素的可见性。

我正在尝试为可见性变化设置动画(通过设置不透明度,甚至可能是缩放比例)。这可以通过多种方式轻松完成,可以通过设置相关的图层属性,将动画添加到图层等等。但是,由于我试图完全依赖绑定行为,我“不能”真正做到这直接。

我尝试使用Layer操作实现一个实现,方法是在相关元素上定义键kCAOnOrderInkCAOnOrderOut的操作,但它确实不起作用,因为setHidden:最多可能是NSView而不是CALayer触发 - 这是有道理的。

所以,我的问题是:当Cocoa绑定调用setHidden:时,如何在NSView上设置setHidden:动画。

谢谢。

3 个答案:

答案 0 :(得分:2)

这将淡出NSView ......

[[someView animator] setAlphaValue:0.0f];

答案 1 :(得分:0)

动画setHidden将没有视觉效果,因为它打开或关闭。如果要为可见性设置动画,请改用setAlpha(或图层上的setOpacity)。它们的值介于0.0和1.0之间。如果您需要为状态信息设置隐藏标志,请调用-performSelector:withObject:afterDelay传递一个选择器,将隐藏值设置为动画完成后所需的任何值。或者,您可以设置一个委托,以便在动画结束时回调显式动画,然后调用setHidden。

答案 2 :(得分:0)

我建议你看看NSViewAnimation。它需要任何NSView,并可以设置框架,大小或可见性的动画。