Ios 如何从父层绘制多个CALayer子层

Ios 如何从父层绘制多个CALayer子层,ios,core-animation,core-graphics,calayer,Ios,Core Animation,Core Graphics,Calayer,我有一个CALayer,它有两个子层,其中包含半静态内容。在渲染顶层时,我希望偶尔继续渲染子层,而不使用setNeedsDisplay计划更新 我知道一个选项是创建委托类并实现drawLayer:inContext:,但我想立即渲染子层,可能是使用renderInContext:但我不想渲染到父层 有没有一种方法可以切换或获取子层的上下文以立即绘制到其中?在保持“根”对象的状态的同时进行绘制的机制是将根对象设置为其将进行渲染的任何层的代理。然后应该在代理中实现drawLayer:inContex

我有一个CALayer,它有两个子层,其中包含半静态内容。在渲染顶层时,我希望偶尔继续渲染子层,而不使用setNeedsDisplay计划更新

我知道一个选项是创建委托类并实现
drawLayer:inContext:
,但我想立即渲染子层,可能是使用renderInContext:但我不想渲染到父层


有没有一种方法可以切换或获取子层的上下文以立即绘制到其中?

在保持“根”对象的状态的同时进行绘制的机制是将根对象设置为其将进行渲染的任何层的代理。然后应该在代理中实现drawLayer:inContext:


请注意,除非您要求层使用setNeedsDisplay重新绘制,否则层不需要重新绘制。因此,在您的情况下,将循环遍历您的状态并调用
[layer setNeedsDisplay]
只有那些需要它的层,而反过来只有那些层将调用drawLayer:inContext:。

为什么要立即绘制到层上下文中?您可以在自己的上下文(如图像上下文)中绘制,也可以在下一次屏幕更新之前(通过调用setNeedsDisplay)更新层。我正在使用一个现有的体系结构,该体系结构希望绘制一系列层,并且根据数据,将跳过某些层。如果我使用setNeedsDisplay,我必须缓存该层的所有配置,以便在更新时进行后续访问。我当然可以这样做,但我希望可以很容易地根据需要绘制到另一层。据我所知,您希望使用一组层作为绘制的空画布,并且您不希望任何层保留状态信息,包括顶层。Calayer不打算这样使用。Calayer应该自己画或者让一些代表来做这项工作。哪一张图纸应该包含必要的状态信息。感谢您的澄清。我可以让顶层保持状态,特别是如果这样可以让我基于该状态绘制子层的话。是否有一个层机制可以做到这一点?GL图层可以这样绘制吗?如果没有,请将您的评论作为答案。如果是这样的话,我只需要在层之间共享状态,这样代理就可以访问它。