准备工作:
dispatch_queue_t disqueue = dispatch_queue_create("myqueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_group_t disgroup = dispatch_group_create();
__weak ViewController *weakSelf = self;
第一张图片:
dispatch_group_async(disgroup, disqueue, ^{
NSLog(@"开始第一项任务");
NSURL *url = [NSURL URLWithString:@"http://www.poluoluo.com/qq/UploadFiles_7828/201611/2016110420035637.jpg"];
@try {
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
if (data) {
leftData = data;
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.leftImageView.image = [UIImage imageWithData:data];
});
}
} @catch (NSException *exception) {
NSLog(@"下载图片1出错啦");
}
NSLog(@"第一项任务完成");
});
第二张图片:
dispatch_group_async(disgroup, disqueue, ^{
NSLog(@"开始第二项任务");
NSURL *url = [NSURL URLWithString:@"http://www.poluoluo.com/qq/UploadFiles_7828/201611/2016110420035680.jpg"];
@try {
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
if (data) {
rightData = data;
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.rightImageView.image = [UIImage imageWithData:data];
});
}
} @catch (NSException *exception) {
NSLog(@"下载图片2出错啦");
}
NSLog(@"第二项任务完成");
});
图片下载结果:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_group_wait(disgroup, dispatch_time(DISPATCH_TIME_NOW, 30 * NSEC_PER_SEC));
NSLog(@"dispatch_group_wait结束");
if (leftData && rightData) {
NSLog(@"图片下载成功");
}
else {
NSLog(@"图片下载失败");
}
});
dispatch_group_notify(disgroup, disqueue, ^{
NSLog(@"dispatch_group_notify执行");
if (leftData && rightData) {
CGSize size = CGSizeMake(0, weakSelf.lowerImageView.frame.size.height);
size.width = size.height * 2;
UIImage *image1 = [UIImage imageWithData:leftData];
UIImage *image2 = [UIImage imageWithData:rightData];
UIGraphicsBeginImageContext(size);
CGFloat length = size.height;
[image1 drawInRect:CGRectMake(0, 0, length, length)];
[image2 drawInRect:CGRectMake(length, 0, length, length)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (image) {
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.lowerImageView.image = image;
});
}
NSLog(@"图片合成结束");
}
});