我已經從Apple的PhotoScroller示例代碼中提取了一些代碼以使用CATiledLayer
。我有一個8000x7000px的圖像,通過互聯網加載。從超級視圖中移除後保留圖像
這是一種在我的應用程序中的地圖功能。我也有兩個幾乎相同的圖像,有不同的疊加層(試圖只添加覆蓋層而沒有運氣)。
我有一個UISegmentedControl
在三個選擇之間切換,我希望imageView加載所選圖像的圖像。因此,如果用戶放大其中一個圖像並選擇另一個選項,則縮放和協調保持不變,並且imageView將所選圖像加載到必要的拼貼點中。
我已經部分管理了這一點。或者,我已經實際管理了這一點,但是當我選擇另一個選項時,調用功能[imageView removeFromSuperview];
時整個屏幕變黑。在幾秒鐘之後黑色(取決於網速),它顯示正確的瓷磚。
如果可能,我希望圖層「淡入」到下一圖層。正如你所知道的,當使用CATiledLayer
時,第一層是低分辨率的整個圖像,但是當放大時,必要的圖塊將「褪色」到具有較小圖塊的下一圖層。
我基本上需要給(TilingView*)imageView
一個「重新加載」命令,並希望它在最後一個圖像上「淡入」。
我試圖將[imageView removeFromSuperview];
註釋掉,這實際上讓我接近我想要的。當我放大並選擇另一個選項時,新圖像實際上已經淡出了舊圖像,但是,當我縮回時,舊圖像顯然滯留在背景中(在新圖像後面),不響應任何事情。我需要稍後從superView中刪除它,但由於新圖像作爲imageView取代了它的位置,因此我無法再訪問它。我知道人們可能希望在這裏看到代碼,但我真的不知道要顯示什麼代碼。而且這個CATiledLayer
已經很少記錄了,我真的很難理解正在發生的事情。
如果你正在加載全瓷磚而不是來自inet的jpegs,那似乎需要更多時間。您可能想要查看PhotoScrollerNetwork(在github上) - 它可以讓您下載jpegs,爲您進行拼貼,並允許併發下載。您也可以將它與Quartz only或libjpegturbo一起使用。 –
@DavidH是的,我查了一下,但是不會花費更多時間?我想整個圖像必須下載imageview才能顯示任何內容?而不是隻需要瓷磚?由於這是一個地圖功能,因此用戶可能永遠不會查看所有圖像的整個深層圖像,因此不需要下載整個圖像。 – Sti
如果您可以先下載第一個小視圖的圖塊,在時間上是一個巨大的勝利。 –