我有一個作爲數字資產管理器形式的web服務。我們的一些用戶在其帳戶中存儲了數千個圖像。我們想給他們一個iPhone應用程序,讓他們訪問這些圖像。我們可以使用無限滾動,但我們希望某種形式的uicollectionview表格可以通過帶有側面索引列表的日期分割,以便它們可以滾動並跳轉到。爲此,我們需要將他們的所有圖像下載到collectionview中,這看起來很瘋狂。如何處理在iOS應用程序中顯示,搜索和過濾大量圖像?
如何處理別人展示,搜索和過濾大量的圖像?
我有一個作爲數字資產管理器形式的web服務。我們的一些用戶在其帳戶中存儲了數千個圖像。我們想給他們一個iPhone應用程序,讓他們訪問這些圖像。我們可以使用無限滾動,但我們希望某種形式的uicollectionview表格可以通過帶有側面索引列表的日期分割,以便它們可以滾動並跳轉到。爲此,我們需要將他們的所有圖像下載到collectionview中,這看起來很瘋狂。如何處理在iOS應用程序中顯示,搜索和過濾大量圖像?
如何處理別人展示,搜索和過濾大量的圖像?
時通常需要大量的數據從一個網絡服務(或文件系統)下載的關鍵是不要做一次全部,而是將其劃分爲您加載和卸載需要管理的部分。沒有辦法做到這一點,但這是一般的想法。
要管理這個過程,可以下載一個描述所有內容的完整索引(如圖像url的json列表)而不下載數據庫中的每個圖像或數據片段(但不是必要的 - 這是贏得的)與數百萬條記錄一起工作)。這使您可以在不需要大量下載的情況下搜索和瀏覽內容。
在你的問題聽起來好像你的圖像按日期範圍有所分組。您可以探索的可能程序可能類似於:
下載所有圖像的索引及其相關日期並將其加載到內存中。 (在成千上萬這應該是沒有問題的)。
images : [
{
url: "http://someurl/image.png",
name: "Great Image!",
date: "12/3/15"
// possibly include more data like search tags...
},..
]
開始下載與最近日期範圍相關的初始圖像集,並在完成時顯示它們。
在iOS上,我通常使用AFNetworking(或者AlamoFire for Swift)來處理異步網絡請求。
異步加載;使用小縮略圖的數據索引,只需要加載個別較大的圖像;一次確定屏幕上有多少圖像適合屏幕顯示,並且只能保留多少個+某些緩衝區;緩存下載到一個點;根據需要從內存中移除圖像。順便說一句,tableview/collection視圖仍然是「無限滾動」,即使有一個邊欄索引或小節標題,但你肯定不想一次加載所有內容,否則你很快就會發現它無響應並容易崩潰。 – mc01