gpt4 book ai didi

cocoa - 在核心动画中,如何获取图层框架和旋转?

转载 作者:行者123 更新时间:2023-12-03 16:37:46 25 4
gpt4 key购买 nike

我正在使用核心动画来对某些图层进行动画处理,其中一些将用于显示视频。

我听说使用多层来播放多部电影不是一个好主意(效率低下)。经过一番搜索后,我找到了一种使用视频帧创建 Open GL 纹理的方法。因此,我想访问图层属性,以便使用纹理通过 OpenGL 来显示它们(避免拥有多个 CAOpenGLLayer,每个图层都有 OpenGL 上下文)。

我已经对 CALayer 进行了子类化,以在 setFrame 上放置断点:但每次值更改时它都不会中断。当 CALayer 在动画过程中发生变化时,如何确定它的帧?

PS:我使用 CARenderer 是因为我必须通过混合所有图层来创建帧,而不是实时创建帧。

最佳答案

您的问题似乎可以归结为:

How do I access the frame/transformation of the layer mid-animation?

答案是您必须在 CALayer 上调用 -presentationLayer。这将返回另一个 CALayer,其属性反射(reflect)任何正在进行的动画的当前值。但请注意,这仅返回当前显示层的近似值。我很确定它基本上会重新计算给定当前时间的动画值,而不是使用上次屏幕更新时的任何值。只要你的帧速率很高,它应该非常接近。

无论如何,当这种情况发生变化时,您都无法收到通知。但您可以做的是每次需要渲染新帧时检查 -presentationLayer。或者,运行 CADisplayLink 并在每次触发时检查 -presentationLayer

但一如既往,您应该进行性能分析。我不知道计算 -presentationLayer 的成本是多少。

关于cocoa - 在核心动画中,如何获取图层框架和旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com