2011-09-21 27 views
0

有沒有一種方法可以在您每次使用更深的縮放級別時重置縮放級別,以便您可以進行無限縮放?無盡變焦CATiledlayer iOS

我正在嘗試創建一個CATiledLayer,其中每個圖塊具有不同的顏色,並且當您縮放到一個圖塊時您將獲得新的顏色,等等。

回答

2

我不確定如何使用CATiledLayer來做到這一點,但Matt Neuburg編寫的編程IOS 4一書中包含了一節「Zooming with Detail」,它描述瞭如何使用UIScrollView做類似的事情。

UIScrollView支持對其內容進行放大放大,但它只是通過縮放轉換放大其內容的未放大的渲染,而不是在較高的zoomScale中重新渲染其內容。因此,爲了提供實際顯示更多細節的縮放,您需要添加一些邏輯。基本上,本書建議你實現scrollViewDidEndZooming:withView:atScale:以便它(1)將UIScrollView的zoomScale重置爲其默認值1.0,並且(2)移除內容視圖並提供包含內容的新視圖所需的真實縮放比例。你需要引入你自己的伊娃來手動追蹤這個真實的比例。結果是,隨着您進一步放大並且真實比例保持單調增加,UIScrollView包含一系列不同的視圖,並將其自身的zoomScale保持在其範圍內,從1.0到最大值,然後重置爲1.0,然後重置爲1.0到最大值等等。書中給出了一個骨架的例子(第一版,第二版印刷中的第506頁)。

你將如何使用這個無限縮放?如果你不需要真正無限的縮放,你可以在真正的比例上做一個非常大的範圍。

如果你想真正無限縮放,你不能跟蹤真實比例的有限變量的縮放級別。相反,您需要修改scrollViewDidEndZooming:withView:atScale:以便它(1)將UIScrollView的zoomScale重置爲默認值1.0,(1)移除內容視圖並提供新視圖,其中新zoomScale 1.0與舊的zoomLevel中的已刪除視圖在視覺上相同。通過這種方式,隨着用戶不斷放大縮小手勢,UIScrollView將重複從1.0循環到最大,在用戶的手勢之間的每個循環中無形地替換底層視圖。

+0

很goog的想法,我給它一個嘗試:) – RecycleRobot