由於各種原因,我正在考慮自己製作CATiledLayer。我已經做了一些調查,但我似乎無法弄清楚CATiledLayer如何知道要提供哪個圖塊。例如,當您滾動圖層時,setPosition:或setBounds:永遠不會被調用。它看起來像後臺線程只是調用drawLayer:inContext:的委託沒有任何觸發器的藍色。 我發現CATiledLayer調用了setContent:帶有一個「CAImageProvider」實例,並且所有對drawLayer:inContext:的調用都來自該類。所以很可能這是確定要繪製的圖塊的關鍵。但是我找不到這個類的任何文檔。CATiledLayer如何知道何時提供新瓷磚?
所以......有人知道這是如何工作的,以及我如何能夠覆蓋它?
至於CATiledLayer的缺點:
- 它總是使用的屏幕分辨率(或X2,X4,等);您無法將其設置爲原始圖像的原始分辨率
- 您無法指定比2更大的任何其他比例因子
- 您必須指定levelsOfDetail和levelsOfDetailBias,對此我根本看不到任何實現原因。如果你的內容是無限可擴展的,比如分形,那麼這是非常有限的。
- 最重要的是:如果你將其限制爲只在一個方向縮放(我這樣做,迫使一個方向的比例因子1的setTransform :),它充當所有怪異
@fishiear:自從你的問題已經有一段時間了?我真的有同樣的問題。你解決了嗎?我必須完成3的縮放因子,並且還在尋找我自己的解決方案。但我不知道它是否好。你最後做了什麼?我想與你聯繫。你可以寫信給我。這對我來說非常重要。 – Fab1n
@ Fab1n我沒有解決這個問題。我最後做的是每次知道顯示的內容會發生變化時(通過縮放和滾動以及新內容可用時),明確告知我的平鋪圖層實現。我可以與你分享代碼,給我你的電子郵件地址。 – fishinear
感謝您的快速響應。我的電子郵件地址是ren dotonline at me dot com。哇讚賞代碼。認爲這爲我節省了很多時間。 – Fab1n