【问题标题】:How to capture contents of a CALayer that has a CAAnimation applied to it?如何捕获应用了 CAAnimation 的 CALayer 的内容?
【发布时间】:2013-01-02 01:49:26
【问题描述】:

我有兴趣将CoreAnimations 的序列录制到视频文件中。为此,我构建了一个系统,该系统每秒 30 次渲染 CALayer 的当前状态并将其合成为视频。但是,这些单独的帧渲染不包括 CoreAnimation 更改。

当前捕获帧的方法:

[self.layer renderInContext:UIGraphicsGetCurrentContext()];

在核心动画文档中写道:

Animatable 属性也可以显式设置动画。明确地 动画一个属性,你创建一个 Core Animation 的实例 动画类并指定所需的视觉效果。显式 动画不会改变层中属性的值,它 只是在显示中对其进行动画处理。

在应用CoreAnimation 之后,您知道在哪里/如何截取图层的实际外观吗?

【问题讨论】:

    标签: ios core-animation


    【解决方案1】:

    很确定您可以调用-presentationLayer 来获得一个与您当前显示的图层版本大致对应的图层...有限制,请查看CALayer.h

    如果您无法捕捉完整 30 帧的输出,您可以在捕捉过程中暂停演示文稿,然后通过操作您的 speedtimeOffset 属性“单步”它们根层。

    【讨论】:

    • 经过测试的-presentationLayer,不幸的是,尽管文档说它应该考虑动画(以及子层的动画),但它在实践中不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多