//
// ViewController.m
// 08-图片下载
//
// Created by gzxzmac on 16/1/28.
// Copyright © 2016年 gzxzmac. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *scrollView; // 滚动视图
@property (nonatomic, strong) UIImageView *imageView;// 显示图片的视图
@property (nonatomic, strong) UIImage *image; // 保存下载完的图片
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self setupView];
// 要把耗时操作放到子线程中执行
// [self downloadImage];
[self performSelectorInBackground:@selector(downloadImage) withObject:nil];
}
- (void)setupView {
// 初始化滚动视图
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.bounds];
// 设置缩放系数
scrollView.minimumZoomScale = 0.3;
scrollView.delegate = self;
[self.view addSubview:scrollView];
// 被初始化图片视图
UIImageView *imageView = [[UIImageView alloc]init];
[scrollView addSubview:imageView];
self.scrollView = scrollView;
self.imageView = imageView;
}
/*
1. 网络请求是耗时操作,需要放到子线程
2. 刷新UI 必须回到主线程
*/
// 如果网速足够慢,下载时间会很长
- (void)downloadImage {
NSLog(@"%@",[NSThread currentThread]);
// URL
NSURL *url = [NSURL URLWithString:@"http://e.hiphotos.baidu.com/zhidao/pic/item/0bd162d9f2d3572cf556972e8f13632763d0c388.jpg"];
// 接收二进制数据
NSData *data = [NSData dataWithContentsOfURL:url];
// 转换成图片
UIImage *image = [UIImage imageWithData:data];
// 要在主线程刷新UI
// wait 参数 是否需要等待代码执行完之后,再执行往后的代码
[self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
NSLog(@"end");
// self.image = image;
}
- (void)setImage:(UIImage *)image
{
NSLog(@"%@",[NSThread currentThread]);
_image = image;
self.imageView.image = image;
// 显示图片原来的大小
[self.imageView sizeToFit];
// 设置滚动内容区域
self.scrollView.contentSize = image.size;
}
// 返回一个要缩放的view
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
@end
多线程:图片下载案例
最新推荐文章于 2022-03-09 16:06:34 发布