我在图层托管视图中有一些CALayers。这些层中的每一层都具有附加层以保持(1)关闭按钮,以及(2)调整大小手柄。这些额外的“控制”图层作为子图层添加到父图层。
目前,当我缩放这些图层所在的工作区时,一切都会缩放 - 包括这些控制图层。但是,我想阻止这些控制层缩放。
是否有办法覆盖将比例变换应用于所有子图层的行为,而不必为每个控制图层覆盖drawInContext:方法(可能是为了反转任何现有的比例变换 - 假设这是可能的)并且没有必须手动发送每个控制层一个setNeedsDisplay:每次缩放?
我发现这个帖子讨论了做类似的事情,但讨论的方向是CATiledLayers,这不是我在这里寻找的。 p>
Redrawing CALayer subclass when super layer is scaled
此外,这篇文章提出了一个有点相关的问题,但回复并不适用于我的情况,因为我无法覆盖控件 - 它们必须是图层层次结构的一部分。
How do I keep a CALayer
, sublayer of a CATiledLayer
, from changing it's scale after a zoom?
答案 0 :(得分:3)
我最终通过覆盖自定义CALayers的layoutSublayers方法解决了这个问题,获得了层次结构的累积比例变换,并将逆变换应用于控制子图层。