异步下载网络图片

  • 需求:异步下载网络图片
  • 思想:
    • 在子线程下载网络图片
      • 下载图片的话拿到图片的url
      • 由url拿到对应的二进制数据(网络中的数据传输通过二进制数据)
      • 由二进制数据得到图片
    • 回到主线程刷新界面
      • 设置scrollView和imageView的大小等UI问题
 1 #import "DownloadImageViewController.h"
 2 
 3 @interface DownloadImageViewController ()
 4 /**
 5  滚动视图
 6  */
 7 @property (nonatomic,strong) UIScrollView *scrollView;
 8 
 9 /**
10  图片视图
11  */
12 @property (nonatomic,strong) UIImageView *imageView;
13 @end
14 
15 @implementation DownloadImageViewController
16 
17 - (void)viewDidLoad {
18     [super viewDidLoad];
19     
20     [self performSelectorInBackground:@selector(downloadImage) withObject:nil];
21     
22 }
23 
24 #pragma mark - 这个方法先于viewDidLoad调用 当view为nil的时候会调用这个方法
25 - (void)loadView{
26     //创建滚动视图
27     self.scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
28     self.scrollView.bounces = NO;
29     self.scrollView.backgroundColor = [UIColor cyanColor];
30     //将滚动视图设置为根视图
31     self.view = self.scrollView;
32 
33     //创建图片视图
34     self.imageView = [[UIImageView alloc]init];
35     [self.view addSubview:self.imageView];
36 
37 }
38 
39 /**********异步下载网络图片****************/
40 - (void)downloadImage{
41     //拿到地址的url
42     NSURL *url = [NSURL URLWithString:@"http://img.daimg.com/uploads/allimg/161005/1-161005114001.jpg"];
43     //网络数据是以二进制的形式传送的
44     NSData *data = [NSData dataWithContentsOfURL:url];
45     UIImage *image = [UIImage imageWithData:data];
46     
47     //回到主线程刷新UI
48     [self performSelectorOnMainThread:@selector(updateUIWithImage:) withObject:image waitUntilDone:NO];
49 
50 
51 }
52 
53 - (void)updateUIWithImage:(UIImage *)image{
54     
55     NSLog(@"updateUIWithImage");
56     //设置图片视图
57     self.imageView.image = image;
58     //设置图片视图的大小和图片一样大
59     [self.imageView sizeToFit];
60     //设置滚动的视图的滚动范围和图片一样大
61     self.scrollView.contentSize = image.size;
62     
63     
64 }
我会不定期分享 iOS 相关技术文章
原文地址:https://www.cnblogs.com/ITCoderW/p/6185072.html