防止CALayer子图层缩放

时间:2010-08-17 07:29:44

标签: objective-c cocoa zoom calayer scale

我在图层托管视图中有一些CALayers。这些层中的每一层都具有附加层以保持(1)关闭按钮,以及(2)调整大小手柄。这些额外的“控制”图层作为子图层添加到父图层。

目前,当我缩放这些图层所在的工作区时,一切都会缩放 - 包括这些控制图层。但是,我想阻止这些控制层缩放。

是否有办法覆盖将比例变换应用于所有子图层的行为,而不必为每个控制图层覆盖drawInContext:方法(可能是为了反转任何现有的比例变换 - 假设这是可能的)并且没有必须手动发送每个控制层一个setNeedsDisplay:每次缩放?

我发现这个帖子讨论了做类似的事情,但讨论的方向是CATiledLayers,这不是我在这里寻找的。

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?

1 个答案:

答案 0 :(得分:3)

我最终通过覆盖自定义CALayers的layoutSublayers方法解决了这个问题,获得了层次结构的累积比例变换,并将逆变换应用于控制子图层。