iOS实现图片边下载边显示
iOS图片显示时使用Incremental方式解码就可以实现边下载边显示的效果,(SDWebImage没有使用这种方式,所以显示图片是一闪而出)。
具体做法是使用CGImageSoureceCreateIncremental(NULL)创建一个空的图片源,在下载图片时,每次获取到最新的Data时都将其更新到图片源并绘制,再更新UIImageView的图片。
代码如下:
#import "ViewController.h"
@interfaceViewController ()<NSURLSessionDataDelegate>
{
UIImageView *bgImageView;
NSMutableData *imageData;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
imageData = [NSMutableDatadata];
bgImageView = [[UIImageViewalloc] initWithFrame:self.view.bounds];
[self.viewaddSubview:bgImageView];
NSURLSession *session = [NSURLSessionsessionWithConfiguration:[NSURLSessionConfigurationdefaultSessionConfiguration] delegate:selfdelegateQueue:[NSOperationQueuemainQueue]];
NSURLSessionDataTask *task = [sessiondataTaskWithURL:[NSURLURLWithString:@"http://image155-c.poco.cn/mypoco/myphoto/20110117/00/20110117001006_1780564805.jpg"]];
[task resume];
}
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
UIImage *temImage =nil;
//拼接历史图片数据
[imageDataappendData:data];
//创建空图片空间
CGImageSourceRef emptySpace =CGImageSourceCreateIncremental(NULL);
//更新图片空间数据
CGImageSourceUpdateData(emptySpace, (CFDataRef)imageData,false);
//绘制图片
CGImageRef image =CGImageSourceCreateImageAtIndex(emptySpace, 0,NULL);
//CGImageRef -> UIImage
temImage = [UIImageimageWithCGImage:image scale:1.0orientation:UIImageOrientationUp];
//释放图片空间
CFRelease(emptySpace);
//更新图片
[bgImageViewsetImage:temImage];
}
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
if (!error) {
NSLog(@"下载完成");
} else {
NSLog(@"下载发生错误");
}
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
补充:https://feiyangxie.top
@end
iOS实现图片边下载边显示相关推荐
- iOS教程:详解iOS多图下载的缓存机制
ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cel ...
- 怎样边下载宝贝图片边给图片添加自己的文字水印或图片水印
今天小编要介绍一个比较常用的技巧,就是如何在下载商品图片时,给商品主图添加一些个性的水印或文字?一起来看看具体的操作步骤吧. 首先复制要抓取的商品链接地址 小编使用的下载图片工具(载图助手),打开进入 ...
- Facebook iOS 应用是如何加速图片显示的?
本文讲的是Facebook iOS 应用是如何加速图片显示的?, 你的Facebook的动态消息中充满着一些关于你朋友.家人以及你所爱的人的照片,也许你会想要在手机上也能重温那些场景.我们一直在寻找提 ...
- iOS中 流媒体播放和下载 韩俊强的博客
iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容 ...
- 微图App下载与安装教程
<微图App>是<水经微图>的移动端,是作为数据采集和数据云同步必不可少的应用,该APP支持在Android和iOS系统上运行,暂时仅推出了Andriod版,后续会推出iOS版 ...
- iOS 9应用开发教程之显示编辑文本标签文本框
iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将 ...
- iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据, 如何解析下载下来的JSON数据格式, 以及如何显示数据和图片的异步 ...
- pt100+51单片机的温控系统程序+仿真图 还带压力显示的
pt100+51单片机的温控系统程序+仿真图 还带压力显示的 使用pt100测温度,经过放大器放大后的电压值乘以236就是实际的温度值0.42V对应100度,0V对应0度,经过ad运算显示出来,其他滤 ...
- 常见卫星图源下载教程
文章目录 一.引言 二.在线地图源是简介 三.常见地信软件如何浏览与下载图源? (1)QGIS (2)arcgis pro (3)arcgis 四.各个图源的具体下载方法 (1)Google Eart ...
最新文章
- mysql 的 VARCHAR VARCHAR2
- 【阿里云课程】循环神经网络:RNN及其改进
- linux 配置tensorflow 全过程记录
- php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例
- java batch_Java EE 7 Batch中传递属性/参数的2种方式
- 【测试工具】禅道项目管理工具设置触发邮箱
- Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- 阿里云轻量服务器 外网卡_阿里云服务器购买流程及注意事项
- 那些互联网IT岗位的招聘潜台词,能看到说明你是历经磨难的老司机
- NYOJ2-括号配对问题
- java 修改分辨率_JAVA程序分辨率修改及自适屏修改
- 经纬度(度分秒)坐标转换为小数格式(weixin公众号【图说GIS】)
- QQ音乐会员免费领取
- 帝国cms ajax,帝国CMS注册体验加强 ajax检测用户名和密码
- css中只读,是否可以通过CSS将输入字段设置为只读?
- 性能优化检测Instruments-time profile的使用
- 手机不小心把计算机隐藏了怎么恢复出厂设置,图标隐藏了怎么弄出来(手机图标隐藏了怎么恢复)...
- txt,csv,json互相转化
- java数据结构--hashset
- arcgis 导入 GML文件