1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| @interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @property (nonatomic, strong) UIImage *image1; @property (nonatomic, strong) UIImage *image2; @end
- (void)test2 { // 异步下载 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 1.下载第1张 NSURL *url1 = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg"]; NSData *data1 = [NSData dataWithContentsOfURL:url1]; self.image1 = [UIImage imageWithData:data1]; [self bindImages]; }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 2.下载第2张 NSURL *url2 = [NSURL URLWithString:@"http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png"]; NSData *data2 = [NSData dataWithContentsOfURL:url2]; self.image2 = [UIImage imageWithData:data2]; [self bindImages]; }); }
- (void)bindImages { if (self.image1 == nil || self.image2 == nil) return; // 3.合并图片 // 开启一个位图上下文 UIGraphicsBeginImageContextWithOptions(self.image1.size, NO, 0.0); // 绘制第1张图片 CGFloat image1W = self.image1.size.width; CGFloat image1H = self.image1.size.height; [self.image1 drawInRect:CGRectMake(0, 0, image1W, image1H)]; // 绘制第2张图片 CGFloat image2W = self.image2.size.width * 0.5; CGFloat image2H = self.image2.size.height * 0.5; CGFloat image2Y = image1H - image2H; [self.image2 drawInRect:CGRectMake(0, image2Y, image2W, image2H)]; // 得到上下文中的图片 UIImage *fullImage = UIGraphicsGetImageFromCurrentImageContext(); // 结束上下文 UIGraphicsEndImageContext(); // 4.回到主线程显示图片 dispatch_async(dispatch_get_main_queue(), ^{ self.imageView.image = fullImage; }); }
|