- 需求:异步下载网络图片
- 思想:
- 在子线程下载网络图片
- 下载图片的话拿到图片的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 }