2015-10-02 16 views
1

我正在使用SDWebImage插件,並且遇到以下情形:我有兩個UIViewController的A和B.在UIViewControllerB中,我從UIImageView中從網上加載一系列10 - 15圖像用以下代碼:SDWebImageCache預存圖像

UIImageView *imageView = [[UIImageView alloc] init]; 
[imageView sd_setImageWithURL:[NSURL URLWithString:[sourceDictionary objectForKey:@"image"]] 
        placeholderImage:[UIImage imageNamed:@"placeholder"]]; 

這很好。除了我開始下載這些圖像,一旦用戶加載UIViewControllerB。我想知道是否有方法從我開始預先緩存或開始下載這些圖像,而用戶仍然在UIViewControllerA,以便當用戶到達UIViewControllerB時,他們看到更短的延遲?我如何以某種方式來做到這一點,以便在下載過程中用戶切換到第二個視圖控制器時不會下載圖像兩次?

回答

1

可能的解決方法可能是使用Singleton模式實現自定義下載管理器,因此它可從AB獲得。

然後,您可以跟蹤請求下載的圖像URL列表以及在完成下載時調用的completed處理程序。

首先你檢查下載的圖像是否具有相同的URL,然後將圖像添加到列表並完成處理程序,或者只是添加新的處理程序。您可以使用字典作爲存儲,將URL用作關鍵字。

然後你可以使用SDWebImageManagerdownloadImageWithURL方法,其中在completed方法,你從列表中刪除圖像,並觸發相應的completed處理程序。

所以在B你知道下載已經完成。你不需要手動緩存圖像SDWebImageCache,讓SDWebImage自動爲你做,所以當你完成的方法被調用只是做你一樣的,但因爲已經下載圖像SDWebImage將採取它從緩存。或者,您可以發回UIImage下載到completed處理程序。