2012-12-12 19 views
16

我觉得有趣与CAReplicatorLayer:CAReplicatorLayer背后的魔力是什么?

  • 它能够非常有效地显示具有不同的变换一个CALayer的多次(原理)
  • 好像它在某种程度上重复使用的“后备存储”的复制层,甚至应用一些颜色色调(如何?)

我想获得手中的源代码或获得有关CAReplicatorLayer背后的魔术知识。我想要有一个类似于CAReplicatorLayer的CALayer类,但有更多的控制权。我想对变换单独控制为每个复制实例

因此以完全不同的方式问: 是否有可能获得CALayer的“后备存储”并显示它,但是我想要多少次?我的意思是为CALayer/UIView渲染纹理,我不知道CoreAnimation/QuartzCore引擎下发生了什么)。


为什么我没有在寻找像例如渲染的CALayer到一个UIImage:

  • 性能
  • 内容是动态/过渡
  • 下相当频繁变化这将是倒手真棒做它的其他方式!
+2

想知道这个我自己。希望有人比我们更聪明哈哈。 –

回答

8

像CAReplicatorLayer或CAGradientLayer这样的专用CALayer能够(通过私有API)通过快速填充或复制直接在GPU上执行其绘图。从某种意义上说,它们不同,后备存储不在普通RAM中,而是直接在GPU上。

+0

感谢您的回复。对于我希望做的事来说,这听起来并不乐观,但确实澄清了一些方面。 :) – hfossli

+0

您可以随时使用EAGLLayer并使用带着色器的OpenGL进行绘制。这将是定制绘图的禁食方式。 – Cocoanetics

+0

我想我不能这样做UIViews支持?或者就我而言:我正在做一些像复制UIWebView一样大胆的东西。我非常喜欢类似于CAReplicatorLayer的东西,但是可以控制每个单独实例的变换(而不是CAReplicatorLayer提供的增量变换)。如果OpenGL/EAGLLayer提供,我会更高兴。 – hfossli