【发布时间】:2023-03-25 20:57:01
【问题描述】:
我有一个带有两个包含半静态内容的子图层的 CALayer。在渲染顶层时,我偶尔会继续渲染子层,而不用 setNeedsDisplay 安排更新。
我知道一种选择是创建委托类并实现drawLayer:inContext:,但我想立即渲染子层,也许使用 renderInContext: 但我不想渲染到父层。
有没有一种方法可以切换或获取子层的上下文以立即绘制到它们中?
【问题讨论】:
-
为什么要立即绘制到图层上下文中?要么绘制到自己的上下文中(如图像上下文),要么更新图层直到下一次屏幕更新(通过调用 setNeedsDisplay)......
-
我正在利用现有的架构,该架构期望绘制到一系列层,并且根据数据,将跳过某些层。如果我使用 setNeedsDisplay,我必须缓存该层的所有配置,以便以后在更新时访问。我当然可以这样做,但希望根据需要轻松绘制到另一层。
-
据我了解,您希望将一堆图层用作绘图的空白画布,并且您不希望任何图层保留包括顶级图层在内的状态信息。 CALayers 并不意味着这样使用。 CALayers 应该自己绘制或让一些代表来做这项工作。绘图应该包含必要的状态信息。
-
感谢您的澄清。我可以让顶层图层保持状态,特别是如果这允许我根据该状态绘制到子图层中。有没有层机制可以做到这一点? GL层可以这样绘制吗?如果没有,请将您的评论作为答案。如果是这种情况,我只需要在层之间共享状态,以便代表可以访问它。
标签: ios core-animation core-graphics calayer