iOS 线程间的通信 (GCD)
发布日期:2021-05-09 04:04:20 浏览次数:19 分类:博客文章

本文共 2326 字,大约阅读时间需要 7 分钟。

 

1、从网络上 下载一张图片将它显示在view上

- (void)imageDownload{    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{        // 图片的网络路径        NSURL *url = [NSURL URLWithString:@"http://img.pconline.com.cn/images/photoblog/9/9/8/1/9981681/200910/11/1255259355826.jpg"];                // 加载图片        NSData *data = [NSData dataWithContentsOfURL:url];                // 生成图片        UIImage *image = [UIImage imageWithData:data];                // 回到主线程        dispatch_async(dispatch_get_main_queue(), ^{            self.imageView.image = image;        });    });}

2、从网络上 下载两张图片,等他们两个都下载完成后,将他们拼成一张图片。

@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *imageView;/** 图片1 */@property (nonatomic, strong) UIImage *image1;/** 图片2 */@property (nonatomic, strong) UIImage *image2;@end

 

- (void)group{        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    // 创建一个队列组    dispatch_group_t group = dispatch_group_create();        // 1.下载图片1    dispatch_group_async(group, queue, ^{        // 图片的网络路径        NSURL *url = [NSURL URLWithString:@"http://img.pconline.com.cn/images/photoblog/9/9/8/1/9981681/200910/11/1255259355826.jpg"];                // 加载图片        NSData *data = [NSData dataWithContentsOfURL:url];                // 生成图片        self.image1 = [UIImage imageWithData:data];    });        // 2.下载图片2    dispatch_group_async(group, queue, ^{        // 图片的网络路径        NSURL *url = [NSURL URLWithString:@"http://pic38.nipic.com/20140228/5571398_215900721128_2.jpg"];                // 加载图片        NSData *data = [NSData dataWithContentsOfURL:url];                // 生成图片        self.image2 = [UIImage imageWithData:data];    });        // 3.将图片1、图片2合成一张新的图片    dispatch_group_notify(group, queue, ^{        // 开启新的图形上下文        UIGraphicsBeginImageContext(CGSizeMake(100, 100));                // 绘制图片        [self.image1 drawInRect:CGRectMake(0, 0, 50, 100)];        [self.image2 drawInRect:CGRectMake(50, 0, 50, 100)];                // 取得上下文中的图片        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();                // 结束上下文        UIGraphicsEndImageContext();                // 回到主线程显示图片        dispatch_async(dispatch_get_main_queue(), ^{            // 4.将新图片显示出来             self.imageView.image = image;        });    });}

 

上一篇:NSTimer 不工作 不调用方法
下一篇:iOS 多线程GCD的基本使用

发表评论

最新留言

很好
[***.229.124.182]2025年04月07日 02时08分55秒