我在图层托管视图中有一些CALayer。这些图层中的每一层都有附加的图层来保存(1)关闭按钮,以及(2)调整大小手柄。这些附加的“控制”图层作为子图层添加到父图层。防止CALayer子图层缩小
当前,当我缩放这些图层所在的工作空间时,所有内容都会缩放 - 包括这些控制图层。但是,我想阻止这些控制层的扩展。
是否有一种方法可以覆盖应用于所有子图层的缩放变换的行为,而无需为每个控制图层重写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?
我最终解决了这个问题,方法是重写自定义CALayers的layoutSublayers方法,获取图层层次结构的累积缩放比例变换,并将逆变换应用于控制子图层。 – Dalmazio 2010-09-28 05:38:35