我在圖層託管視圖中有一些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