【问题标题】:CAAnimation get live updates of animated propertiesCAAnimation 获取动画属性的实时更新
【发布时间】:2014-11-21 08:04:59
【问题描述】:

我已将CAAnimation 添加到某个视图的图层,它会为视图的position 设置动画。动画运行时,我想在 OpenGL 窗口中为对象设置动画。为此,我必须以某种方式从我制作动画的属性中获取实时更新。

我试过了

someView.layer.addObserver(self, forKeyPath: "position", options: nil, context: nil)

但我只有在动画完成后才能获得更新。我还尝试将观察者添加到表示层,但没有成功。

有什么想法吗?

【问题讨论】:

  • 这里也一样。有人对此有答案吗?

标签: ios objective-c iphone core-graphics core-animation


【解决方案1】:

我试图在 CABasicAnimation 期间观察 (KVO) CALayer 的变换,但从来没有为我工作,甚至尝试过 PresentationLayer...我在这种情况下解决它的方法是使用 CADisplayLink。

这将允许您指定希望链接运行的 frameTimeInterval,并且每次触发时,您都可以直接检查您尝试从中获取 KVO 更新的层的变换。

非常适合我。

所以,是这样的:

displayLink = CADisplayLink(target: self, selector: "foo")
displayLink?.frameInterval = 1
displayLink?.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)

在 foo() 内部,我会检查图层的presentationLayer() 上的转换,然后我会根据需要使用这些信息...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    相关资源
    最近更新 更多