【问题标题】:How to replace the custom animation for a CALayer appearing如何替换出现的 CALayer 的自定义动画
【发布时间】:2010-02-24 23:32:46
【问题描述】:

我有一个 CALayer,我想更改它在屏幕上显示的自定义动画。我创建了一个委托,以便我可以捕获该方法:

- (id < CAAction >)actionForLayer:(CALayer *)layer forKey:(NSString *)key

我检查键是否等于 kCAOnOrderIn,但是,尚未告知该层它的边界是什么(它当前报告边界为 (0, 0, 0, 0))。所以然后我尝试检查键是否等于“边界”,但我仍然得到报告相同的矩形(0、0、0、0)。

我想要做的动画不是图层通过不透明度逐渐“淡出”到屏幕上,而是希望它从小到中间到完整的边界增长到屏幕上。但要做到这一点,我需要知道它的完整界限是什么。无论如何都知道这样我可以替换自定义动画,还是我只是以错误的方式接近这个?

谢谢

【问题讨论】:

    标签: objective-c cocoa core-animation calayer


    【解决方案1】:

    我知道这是 3 个月大,但我正在寻找类似问题的答案,并注意到这没有答案(我想要一些代表;)

    我正在覆盖 UIView (iPhone SDK) 上的 actionForLayer:forKey:,该 UIView (iPhone SDK) 自动设置为其支持 CALayer 的委托,以便为锚点注入不同的操作。我注意到我可以通过 CALayer 的presentationLayer 访问旧值,而新值在modelLayer 中。但是我认为在您的情况下发生的事情是,在您告诉图层它的界限之前,系统正在调用 onOrderIn 操作(可能是在图层被添加到视图层次结构时)。其实这是正常的。

    除了“onOrderIn”键之外,您还应该等待“边界”。

    您在等待其他键吗? “onOrderOut”还是“隐藏”?

    干杯, 科林

    【讨论】:

    • 天哪,是的,这是不久前的事了。在我用我当时想做的任何事情对其进行测试之前,不想将其标记为答案。我必须尽快回复你。
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 2011-01-24
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多