先站在巨人的肩膀上
我们可以创建多个UIImageView对象,通过UIImageView对象使用SDWebImage获取Kingfisher去下载图片,下载完图片后去UIImageView对象中获取对应的图片。
使用数组去接收下载的图片
既然图片是有序的,那么我们就可以创建一个数组,数组中元素个数是和下载图片的张数一样的,每下载完成一张图片就将图片放到数组中相应的位置上。
代码:
#pragma mark --- 多个图片上传后, block 回调 URL ,按照顺序装入新数组
- (void)picsUploadDemoimages:(NSArray *)images{
NSMutableArray *picUrlArray = [NSMutableArray array];
for (int i = 0; i < images.count; i++) {
[picUrlArray addObject:[NSNull null]];
}
// dispatch_queue_t queue = dispatch_queue_create(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_group_t dispatchGroup = dispatch_group_create();
for (NSInteger i = 0; i < images.count; i ++) {
dispatch_group_async(dispatchGroup, queue, ^{
NSLog(@"currentThread:%@", [NSThread currentThread]);
dispatch_group_enter(dispatchGroup);
[self uploadDemoSucessBlock:^(NSString *url) {
// NSLock * lock = [[NSLock alloc]init];
// [lock lock];
NSLog(@"i:%ld---url:%@", (long)i, url);
picUrlArray[i] = url;
// [lock unlock];
dispatch_group_leave(dispatchGroup);
} ErrorBlock:^{
dispatch_group_leave(dispatchGroup);
} index:i];
});
}
dispatch_group_notify(dispatchGroup, queue, ^{
if (picUrlArray.count == images.count && picUrlArray.firstObject != nil) {
// 已经传完毕
NSLog(@"picUrlArray:%@", picUrlArray);
}
});
NSLog(@"🍎");
}
- (void)uploadDemoSucessBlock:(void (^)(NSString *))SucessBlock
ErrorBlock:(void (^)(void))errorBlock
index:(NSInteger)index{
if (SucessBlock) {
SucessBlock([NSString stringWithFormat:@"%ld-PicURL",index]);
}
}
使用字典去接收下载的图片
每下载完成一张图片就使用字典去接收,key是装有图片URL数组的下标,value是图片即image对象,当所有的图片都下载完成后去遍历该字典,通过下标这个key去获取到每张图片并按顺序(key保证了顺序)放到数组中。
网友评论