[英]load images using SDWebImage in order
經過大量的閱讀和推薦,我正在嘗試在我的應用程序中實現SDWebImage框架。 我可以從服務器下載圖像,但問題是,由於圖像大小不同,它們不按照我稱之為的順序下載(並且希望它們是這樣)。
以下是參考框架: https : //github.com/rs/SDWebImage
正如您可以從打印線上看到的證據:
2013-08-20 11:11:01.785 Project[10785:c07] SD LOAD 1 array count = 1
2013-08-20 11:11:02.668 Project[10785:c07] SD LOAD 0 array count = 2
2013-08-20 11:11:02.946 Project[10785:c07] SD LOAD 3 array count = 3
2013-08-20 11:11:03.306 Project[10785:c07] SD LOAD 2 array count = 4
2013-08-20 11:11:03.862 Project[10785:c07] SD LOAD 4 array count = 5
2013-08-20 11:11:04.094 Project[10785:c07] SD LOAD 5 array count = 6
2013-08-20 11:11:04.793 Project[10785:c07] SD LOAD 6 array count = 7
2013-08-20 11:11:04.837 Project[10785:c07] SD LOAD 7 array count = 8
2013-08-20 11:11:05.046 Project[10785:c07] SD LOAD 8 array count = 9
2013-08-20 11:11:05.428 Project[10785:c07] SD LOAD 9 array count = 10
以下是我的方法:
-(void)sdWebLoadImages:(NSMutableArray*)imagesURLS{
[_loadedImages removeAllObjects];
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
_loadedImages = tempArray;
for (int i=0;i<imagesURLS.count;i++){
[_manager downloadWithURL:[imagesURLS objectAtIndex:i]
options:0
progress:^(NSUInteger receivedSize, long long expectedSize)
{
// progression tracking code
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType,BOOL finished)
{
if (image && finished)
{
[_loadedImages addObject:image];
NSLog(@"SD LOAD %i array count = %i",i,_loadedImages.count);
}
}];
}
}
我該如何解決這個問題(這是我的for循環邏輯中的東西嗎?)。 此外,我試圖取消單擊按鈕時的所有下載,並使用[_manager cancelAll],但似乎沒有工作 - 任何想法為什么?
謝謝fam!
添加:
現在的問題是管理器首先將所有緩存的圖像插入到數組中,導致順序中斷,即使我將setMaxConcurrentOperationCount設置為1.不確定即使緩存圖像如何按順序保持下載順序。
像冰一樣簡單,正如'Justin Amberson'指出的那樣:
Go to SDWebImageDownloader.m
我假設您正在使用最新的SDWebImage庫。
在第72行:
_downloadQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount;
將其更改為:
_downloadQueue.maxConcurrentOperationCount = 1;
它將一次下載一個圖像。
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.