IOS UI多线程 NSThread 下载并显示图片到UIImageView
效果图
@property (weak,nonatomic)IBOutletUILabel *downLabelInfo;
@property (weak,nonatomic)IBOutletUIImageView *imageView;
@end
@implementationViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *url =@"http://d.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=6cbcab9dabec8a13141a53e3c135aaec/aa64034f78f0f7369453c3730855b319ebc41316.jpg";
@autoreleasepool {
NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(downloadImage:)object:url];
[thread start];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(void) downloadImage:(NSString *)url {
// 要把显示的内容放到同步方法前面即可
self->_downLabelInfo.text =@"正在下载图片中...";
// 同步方法 会卡线程直到完成位置
NSData *imageData = [NSDatadataWithContentsOfURL:[NSURLURLWithString:url]];
UIImage *image =[UIImageimageWithData:imageData];
if(image==nil)
{
}
else
{
//self->_downLabelInfo.text = @"正在下载图片中...";所以这条语句写了也没用
[self performSelectorOnMainThread:@selector(updateImageView:)withObject:(image)waitUntilDone:YES];
}
}
-(void) updateImageView:(UIImage *)image
{
self->_imageView.image = image;
self->_imageView.frame=CGRectMake(self.view.frame.size.width/2-100,self.view.frame.size.height/2-100,200, 200);
self->_downLabelInfo.textColor = [UIColorredColor];
self->_downLabelInfo.text =@"图片下载完成";
}
@end
第二种方式使用 NSURLConnection sendSynchronousRequest 同步方式获取图片内容并显示
将downloadImage方法修改如下
-(void) downloadImage:(NSString *)url
{
self->_downLabelInfo.text =@"正在下载图片中...";
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:url]];
NSError *error;
// 此处将会造成阻塞
NSData *data = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:&error];
if(data ==nil)
{
NSLog(@"nil");
}
else
{
UIImage *image =[UIImageimageWithData:data];
self->_imageView.image = image;
self->_downLabelInfo.textColor = [UIColorredColor];
self->_downLabelInfo.text =@"图片下载完成";
}
}
IOS UI多线程 NSThread 下载并显示图片到UIImageView的更多相关文章
- EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题
在上一篇里,EmguCV(OpenCV)实现高效显示汉字及叠加 实现了视频叠加及显示,但存在问题,就是 Emgu.CV.UI.ImageBox及C# picturebox显示图片时都会出现闪烁,尤其 ...
- IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)
编写一个如下界面,实现: 1.在文本输入框中输入一个网址,然后点击显示图片,图片显示到UIImageView中. 2.点击下载,这张显示的图片被下载到手机的Documents文件夹下的Dowmload ...
- Spring MVC 上传、下载、显示图片
目录 1. 准备工作 1.1 数据库表准备 1.2 实体类 User 和 Mapper(DAO) 1.3 pom.xml 依赖包 1.4 SSM 框架的整合配置 2. 控制器 UserControll ...
- [iOS]深入浅出 iOS 之多线程 NSThread
OS 支持多个层次的多线程 编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法. 下面简要说明这三种不同范式: Thread 是这三种范式里面相对轻量级的,但也是使用起 ...
- iOS:多线程NSThread的详细使用
NSThread具体使用:直接继承NSObject NSThread:. 优点:NSThread 是轻量级的,使用简单 缺点:需要自己管理线程的生命周期.线程同步.线程同步对数据的加锁会有一定的系统开 ...
- iOS多线程自定义operation加载图片 不重复下载图片
摘要:1:ios通过抽象类NSOperation封装了gcd,让ios的多线程变得更为简单易用: 2:耗时的操作交给子线程来完成,主线程负责ui的处理,提示用户的体验 2:自定义operati ...
- iOS开发——多线程篇——NSOperation(基于GCD多线程编程),下载图片并合成新图片
一.NSOperation的基本概念1.简介NSOperation的作用配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperatio ...
- 【iOS系列】-多图片多线程异步下载
多图片多线程异步下载 开发中非常常用的就是就是图片下载,我们常用的就是SDWebImage,但是作为开发人员,不仅要能会用,还要知道其原理.本文就会介绍多图下载的实现. 本文中的示例Demno地址,下 ...
- iOS开发——多线程篇——快速生成沙盒目录的路径,多图片下载的原理、SDWebImage框架的简单介绍
一.快速生成沙盒目录的路径 沙盒目录的各个文件夹功能 - Documents - 需要保存由"应用程序本身"产生的文件或者数据,例如:游戏进度.涂鸦软件的绘图 - 目录中的文件会被 ...
随机推荐
- Phonegap中自定义插件的使用
在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能. 源代码结构图: 本文目的在于讲述怎么扩展一个phonegap组件以及实现. 针对ph ...
- bzoj3504: [Cqoi2014]危桥
题意:给出一个图,有的边可以无限走,有的只能走两次(从一头到另一头为一次),给定两个起点以及对应的终点以及对应要走几个来回,求判断是否能完成. 先来一个NAIVE的建图:直接限制边建为容量1,无限制为 ...
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
提供一种算法: #define max(a, b) ((((a)-(b)) + fabs(a-b))?(a):(b))
- Nginx配置单主机多域名
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; ...
- apache 重定向
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https:// ...
- java基础之 多态
在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP.这也是为什么有人说,使用面向对象语言 ...
- jQuery初级篇(一)
知识说明: jQuery库是一个javascript库文件,它比起javascript来,写的更少,但做得更多,下面便对刚开始学习jQuery,一些基础知识整理出来,供后期翻阅. 一. jQ ...
- 我是一只IT小小鸟读后感
当老师推荐我读这本书的时候,并不想看,因为我不喜欢机械的东西,然而阅读几章后,对这本书有了其他看法.不知不觉竟把它看完!看完这本<我是一只IT小小鸟>,我感触很深. 在书中我明白了很多,大 ...
- SharePoint Framework 开发工具和库
博客地址:http://blog.csdn.net/FoxDave SharePoint Framework包含一些客户端JavaScript库,你可以用来构建自己的解决方案.本文提供了你可以用来 ...
- SharePoint Document Library中的"Versioning Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint文档库关于版本的设置:"Versioning Settings",可以通过CSOM用L ...