ios - CAReplicatorLayer 背后的魔力是什么?

标签 ios core-animation calayer quartz-core careplicatorlayer

我发现 CAReplicatorLayer 的有趣之处:

  • 它能够非常有效地多次显示具有不同转换的 CALayer(怎么做?)
  • 它似乎以某种方式重用了复制层的“后备存储”,甚至对其应用了一些颜色(如何?)

我想接触源代码或了解 CAReplicatorLayer 背后的魔法。我想要一个类似于 CAReplicatorLayer 的 CALayer 类,但有更多的控制。我想对每个复制实例单独控制转换

所以以完全不同的方式问: 是否可以获取 CALayer 的“后备存储”并根据需要多次显示它?

(我所说的“后备存储”是指 CALayer/UIView 的渲染纹理。我不太了解 CoreAnimation/QuartzCore 背后发生的事情)。


为什么我不考虑替代方案,例如将 CALayer 渲染为 UIImage:

  • 表现
  • 内容是动态的/在转换过程中经常变化
  • 如果换一种方式去做,那就太棒了!

最佳答案

特殊用途的 CALayer,如 CAReplicatorLayer 或 CAGradientLayer 能够(通过私有(private) API)使用快速填充或复制直接在 GPU 上执行它们的绘图。从某种意义上说,它们是不同的,因为后备存储不在普通 RAM 中,而是直接在 GPU 上。

关于ios - CAReplicatorLayer 背后的魔力是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841463/

相关文章:

ios - 是保存: method thread-safe?

ios - 是否可以在 Swift 的启动屏幕中显示额外的图像和按钮

ios - UIStackView 图层属性

objective-c - 自定义 UITextField 清除按钮

ios - 使用 iPhone 模拟器在 openGL ES 上测试手势

iphone - CAShapeLayer 路径在动画后消失 - 需要它留在同一个地方

iphone - 自定义UINavigationController动画: CATransition

cocoa - 如何像 Front Row 一样先将我的 Core Animation 应用程序淡入黑屏?

ios - 在 CALayer 中逐行绘制图形的有效方法

ios - CALayer 优化?