2010-08-17 49 views
0

我已經獲得了圖層託管的工作空間,因此當工作空間大幅縮小時,可以很好地爲數百個圖像使用CATiledLayers。所有圖像都使用較低分辨率的圖像,並且在平移和縮放大量圖像時,我的應用程序響應更快。調整CATiledLayer的大小使用縮放變換與邊界操作

但是,在我的應用程序中,我還爲用戶提供了使用調整大小手柄調整圖層大小的功能。在將圖像圖層轉換爲使用CATiledLayers之前,我通過根據調整大小增量(鼠標拖動)操縱圖像圖層的邊界來進行圖層大小調整,並且它運行良好。但是現在使用CATiledLayers時,這會導致CATiledLayers在我通過邊界操縱調整圖層大小並通過縮放轉換縮放工作空間時出現混淆。具體來說,如果我將CATiledLayer的大小調整爲寬度/高度尺寸的一半(面積的1/4),則其中的圖像將突然縮放至1/2尺寸的已調整大小的框架,使框架的3/4空白。這似乎恰恰是在調用內部CATiledLayer邏輯來提供較低分辨率的圖像表示時。如果我不觸摸調整大小處理程序並縮放/取消縮放工作區,它會正常工作。

有沒有辦法使縮放/調整大小與CATiledLayers一起玩,或者我將不得不將我的圖層大小調整邏輯轉換爲使用縮放轉換而不是邊界操作?

+0

我最終解決了這個問題,通過將我的圖層調整大小邏輯轉換爲使用縮放轉換,方法是重寫我的自定義圖像圖層類的setBounds:方法來縮放其包含的CATiledLayer,並相應地重新定位。此外,確保將CATiledLayer的autoresizingMask設置爲kCALayerNotSizable非常重要,因爲我們在setBounds:中手動處理調整大小。注意:一定要調用超類的setBounds:的實現。 – Dalmazio 2010-09-19 07:52:20

回答

2

我最終解決了這個問題,它將我的圖層大小調整邏輯轉換爲使用縮放轉換,方法是重寫我的自定義圖像圖層類的setBounds:方法以縮放其包含的CATiledLayer,並相應地重新定位。此外,確保將CATiledLayer的autoresizingMask設置爲kCALayerNotSizable非常重要,因爲我們在setBounds:中手動處理調整大小。

注意:一定要調用超類的setBounds:的實現。

+0

圖層沒有自動調整遮罩 - 您是否將圖層視圖上的autoResizingMask設置爲UIViewAutoresizingNone? – TomH 2011-01-08 12:26:04

+0

圖層具有Mac 10.5/6桌面CALayers的自動調整蒙版。對於iOS,你是對的,但他們沒有。但是,我並不是指iOS。 – Dalmazio 2011-01-08 17:06:51