按顺序使用SDWebImage加载图像
经过大量的阅读和build议,我试图在我的应用程序中实现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); } }]; } }
我怎样才能解决这个问题(这是我的循环逻辑?)。 此外,我试图取消所有的下载时,单击一个button,并使用[_manager cancelAll],但似乎并没有工作 – 任何想法为什么?
谢谢fam!
添加:
现在的问题是,pipe理器首先插入所有caching的图像到数组中,导致顺序被中断,即使我将setMaxConcurrentOperationCount设置为1.不知道如何保持下载顺序,即使使用caching的图像。
就像“Justin Amberson”指出的那样简单:
Go to SDWebImageDownloader.m
我假设你正在使用最新的SDWebImage库。
在线72:
_downloadQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount;
将其更改为:
_downloadQueue.maxConcurrentOperationCount = 1;
它将一次下载一个图像。
干杯