设为首页 加入收藏

TOP

03-队列组 (了解)(一)
2017-10-13 10:09:45 】 浏览:7000
Tags:03- 队列 了解
  1 #import "XZViewController.h"
  2 
  3 // 1.分别下载2张图片:大图片、LOGO
  4 // 2.合并2张图片
  5 // 3.显示到一个imageView身上
  6 
  7 @interface XZViewController ()
  8 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
  9 @property (nonatomic, strong) UIImage *image1;
 10 @property (nonatomic, strong) UIImage *image2;
 11 @end
 12 
 13 @implementation XZViewController
 14 
 15 - (void)viewDidLoad
 16 {
 17     [super viewDidLoad];
 18     
 19 }
 20 
 21 // 2D绘图  Quartz2D
 22 // 合并图片 -- 水印
 23 
 24 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 25 {   // 方法三  26     // 1.队列组
 27     dispatch_group_t group = dispatch_group_create();
 28     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
 29     
 30     // 2.下载图片1
 31     __block UIImage *image1 = nil;
 32     dispatch_group_async(group, queue, ^{
 33         NSURL *url1 = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg"];
 34         NSData *data1 = [NSData dataWithContentsOfURL:url1];
 35         image1 = [UIImage imageWithData:data1];
 36     });
 37     
 38     // 3.下载图片2
 39     __block UIImage *image2 = nil;
 40     dispatch_group_async(group, queue, ^{
 41         NSURL *url2 = [NSURL URLWithString:@"http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png"];
 42         NSData *data2 = [NSData dataWithContentsOfURL:url2];
 43         image2 = [UIImage imageWithData:data2];
 44     });
 45     
 46     // 4.合并图片 (保证执行完组里面的所有任务之后,再执行notify函数里面的block)
 47     dispatch_group_notify(group, queue, ^{
 48         // 开启一个位图上下文
 49         UIGraphicsBeginImageContextWithOptions(image1.size, NO, 0.0);
 50         
 51         // 绘制第1张图片
 52         CGFloat image1W = image1.size.width;
 53         CGFloat image1H = image1.size.height;
 54         [image1 drawInRect:CGRectMake(0, 0, image1W, image1H)];
 55         
 56         // 绘制第2张图片
 57         CGFloat image2W = image2.size.width * 0.5;
 58         CGFloat image2H = image2.size.height * 0.5;
 59         CGFloat image2Y = image1H - image2H;
 60         [image2 drawInRect:CGRectMake(0, image2Y, image2W, image2H)];
 61         
 62         // 得到上下文中的图片
 63         UIImage *fullImage = UIGraphicsGetImageFromCurrentImageContext();
 64         
 65         // 结束上下文
 66         UIGraphicsEndImageContext();
 67         
 68         // 5.回到主线程显示图片
 69         dispatch_async(dispatch_get_main_queue(), ^{
 70             self.imageView.image = fullImage;
 71         });
 72     });
 73 }
 74 /** 方法二  */
 75 - (void)test2
 76 {
 77     // 异步下载
 78     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
 79         // 1.下载第1张
 80         NSURL *url1 = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg"];
 81         NSData *data1 = [NSData dataWithContentsOfURL:url1];
 82         self.image1 = [UIImage imageWithData:data1];
 83         
 84         [self bindImages];
 85     });
 86     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
 87         // 2.下载第2张
 88         NSURL *url2 = [NSURL URLWithString:@"http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png"];
 89         NSData *data2 = [NSData dataWithContentsOfURL:url2];
 90         self.image2 = [UIImage imageWithData:data2];
 91         
 92         [self bindImages];
 93     });
 94 }
 95 
 96 - (void)bindImages
 97 {
 98     if (self.image1 == nil || self.image2 == nil) return;
 99     
100     // 3.合并图片
101     // 开启一个位图上下文
102     UIGraphicsBeginImageContextWithOptions(self.image1.size, NO, 0.0);
103     
104     // 绘制第1张图片
105     CGF
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS开发 使用RMStore简化内购代码.. 下一篇03-队列组 (了解)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目