多线程:图片下载案例
2016-03-25 23:23
337 查看
// // 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]; } - (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 { // 要把耗时操作放到子线程中执行 dispatch_async(dispatch_get_global_queue(0, 0), ^{ // 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]; // 回到主线程 dispatch_sync(dispatch_get_main_queue(), ^{ // 刷新UI [self setImage: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
相关文章推荐
- 80端口被占用(端口检查)解决--转
- 推荐一个免费的论文查重网站
- Binary Tree Inorder Traversal
- 多线程:GCD 基本使用
- java 递归
- 弦月下的SQL<2> 数据库管理
- CentOS-6.5下编译安装LNMP环境【nginx1.8.1、mysql5.5.43、php 5.6】
- key word
- 游标使用效率对比
- 多线程:block 演练
- Spring事务管理(详解+实例)
- 职场“潜”规则:心法和技法
- SQL语言简介
- zk-002 zookeeper的基本概念
- 多线程:UIView 动画案例
- Pycharm使用笔记
- 图片异步加载之 Android-Universal-Image-Loader
- 第七届蓝桥杯省赛8:四平方和
- 如何快速部署自己的插件到Nexus服务器(P2 Update site)?
- java io操作