【问题标题】:Animating setHidden: on NSView via Cocoa bindings动画 setHidden:在 NSView 上通过 Cocoa 绑定
【发布时间】:2011-02-02 21:43:21
【问题描述】:

我目前正在对一个项目进行最后的润色。

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

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

我尝试了使用层操作的实现,通过为相关元素上的键 kCAOnOrderInkCAOnOrderOut 定义操作,但它确实不起作用,因为 setHidden: 很可能在 @ 上触发987654324@ 而不是 CALayer - 这是有道理的。

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    这将淡出一个 NSView...

    [[someView animator] setAlphaValue:0.0f];
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • setHidden: 在 CALayer 上动画的。输入/输出键的默认操作实际上使用 CATransition 导致图层不透明度动画。
      • 是的。隐藏在您可以更改值的意义上是可动画的,但是,只有两个可能的值。 Core Animation 在值之间进行插值。隐藏,它是YES或NO。但是听起来你想要它做的是在调用 setHidden 时自动触发淡入淡出动画。那是对的吗?如果是这样,我认为你不能只用绑定来做到这一点。您可能必须编写代码。您可以尝试绑定到 alpha 属性并将其设置为 0 或 1。似乎这可能会给您想要的东西,但我不确定您是如何连接的。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 2021-07-03
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-12
        • 2015-09-06
        相关资源
        最近更新 更多