私はSDWebImageを使用して画像を配列にロードしています。これらの画像を for ループで呼び出す順序で読み込む必要がありますが、キャッシュされている画像がいくつかあるため、ダウンロードされる画像の前に配置されます。
2013-08-20 17:45:51.318 img of index 0. Inserted at 0 / 1 with cacheType of 1
2013-08-20 17:45:51.336 img of index 1. Inserted at 1 / 2 with cacheType of 1
2013-08-20 17:45:51.350 img of index 2. Inserted at 2 / 3 with cacheType of 1
2013-08-20 17:45:51.391 img of index 4. Inserted at 3 / 4 with cacheType of 1
2013-08-20 17:45:51.402 img of index 6. Inserted at 4 / 5 with cacheType of 1
2013-08-20 17:45:51.415 img of index 7. Inserted at 5 / 6 with cacheType of 1
2013-08-20 17:45:51.419 img of index 8. Inserted at 6 / 7 with cacheType of 1
2013-08-20 17:45:51.428 img of index 9. Inserted at 7 / 8 with cacheType of 1
2013-08-20 17:45:54.982 img of index 3. Inserted at 8 / 9 with cacheType of 0
2013-08-20 17:45:56.840 img of index 5. Inserted at 9 / 10 with cacheType of 0
キャッシュの種類:
/**
* The image wasn't available the SDWebImage caches, but was downloaded from the web.
*/
SDImageCacheTypeNone = 0,
/**
* The image was obtained from the disk cache.
*/
SDImageCacheTypeDisk,
/**
* The image was obtained from the memory cache.
*/
SDImageCacheTypeMemory
私の方法:
//Web loading
_manager = [SDWebImageManager sharedManager];
_manager.imageDownloader.maxConcurrentDownloads = 1;
-(void)loadImages:(NSMutableArray*)imagesURLS{
//_indexOfLastImageLoaded = 0;
[_loadedImages removeAllObjects];
_loadedImages = [[NSMutableArray alloc]init];;
for (int i=0;i<imagesURLS.count;i++){
[_manager downloadWithURL:[imagesURLS objectAtIndex:i]
options:0
progress:^(NSUInteger receivedSize, long long expectedSize)
{
//NSLog(@"%i out of %lli",receivedSize,expectedSize);
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType,BOOL finished)
{
if (image && finished)
{
[_loadedImages addObject:image];
NSLog(@"img of index %i. Inserted at %i / %i with cacheType of %i",i,[_loadedImages indexOfObject:image],_loadedImages.count, cacheType);
}
}];
}
}
次のような場合に、配列の数をチェックします。
if(_loadedImages.count > _indexOfImageBeingDisplayed ){
NSLog(@"Top IV img loaded from array at index %i",_indexOfImageBeingDisplayed);
[_imagePreviewerTop setImage:[_loadedImages objectAtIndex:_indexOfImageBeingDisplayed]];
[_imagePreviewerTop setFrame:_borderFrame];
}
画像の並べ替えにより、ユーザーに表示しようとしている情報が台無しになります。「オプション」パラメータも変更しようとしましたが、それもうまくいきませんでした。
どんな助けでも大歓迎です。
ありがとう!