2010-05-12 55 views
1

我在UIScrollView中有一個CATiledLayer,並且所有工作正常。現在我想添加對顯示三個縮放級別的不同拼貼的支持。CATiledLayer:在drawLayer中確定levelsOfDetail

我已將levelsOfDetail設置爲3,我的瓷磚尺寸爲300 x 300.這意味着我需要提供三組瓷磚(我提供PNG)以覆蓋:300 x 300,600 x 600和1200 x 1200我的問題是內部「(void)drawLayer:(CALayer *)層inContext:(CGContextRef)ctx」我無法計算出當前正在繪製哪個levelOfDetail。我可以通過使用CGContextGetClipBoundingBox來檢索當前需要的邊界,通常這會請求上述大小之一的矩形,但在圖層邊緣處,矩形通常較小,因此這不是一個好方法。

基本上,如果我已將levelsOfDetail設置爲3,如何在調用drawLayer時請求級別1,2或3?

謝謝,

羅素。

+0

你能解決這個問題嗎?我長期以來面臨同樣的問題... – iOSDev 2013-03-27 06:54:30

+0

是啊,向下滾動! – 2016-01-28 17:25:57

回答

2

我最終解決了這個問題。

獲取圖形上下文的CTM並查看其比例(例如a元素)。

CGAffineTransform transform = CGContextGetCTM (ctx); 

    transform.a holds the zoom 
+0

嗨羅素, 我使用CATiledLayer從pdf中繪製頁面。 它工作正常,但當我旋轉控制檯日誌中的設備我得到3錯誤, 1.wait_fences:未能收到回覆:10004003 2. :FT_Select_Charmap失敗:錯誤6. 3.Received內存警告。等級= 2 你對如何解決這些錯誤有任何想法。 謝謝 – CKT 2010-08-14 10:36:23