我们的目的是让self.view变成scrollView,然后在scrollView中放一个UIImageView,然后在UIImageView中放一个从网络上下载的图片。下载让子线程去下载,因为比较耗时,然后更新UI的话我们返回主线程去做。因为子线程是不一定能更新UI的,会有安全隐患。
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic ,strong)UIScrollView * scorllView;
@property (nonatomic, strong)UIImageView * imageView;
@end
@implementation ViewController
-(void)loadView
{
self.scorllView=[[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.view=self.scorllView;
self.imageView=[[UIImageView alloc]init];
[self.scorllView addSubview:self.imageView];
}
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个子线程
NSThread * thread=[[NSThread alloc]initWithTarget:self selector:@selector(downloadImage) object:nil];
//让线程进入就绪状态
[thread start];
}
//下载网络图片
-(void)downloadImage
{
//根据网址创建统一资源标识符
NSURL * url=[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1502267808635&di=40d2848bd388e1551749d652ab3a1438&imgtype=0&src=http%3A%2F%2Fabc.2008php.com%2F2013_Website_appreciate%2F2013-07-22%2F20130722175804.jpg"];
//下载图片
NSData * data=[NSData dataWithContentsOfURL:url];
//把NSData转换成UIImage
UIImage * image=[UIImage imageWithData:data];
//在主线程上去更新UI控件,waitUntilDone会等待update方法执行完毕之后,才去执行后面的代码
[self performSelectorOnMainThread:@selector(update:) withObject:image waitUntilDone:YES];
}
-(void)update:(UIImage *)image
{
//设置图片
self.imageView.image=image;
//设置imageView的大小和图片一样
[self.imageView sizeToFit];
//设置scrollView的滚动的范围
self.scorllView.contentSize=image.size;
}