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实现图片边下载边显示相关推荐

  1. iOS教程:详解iOS多图下载的缓存机制

    ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cel ...

  2. 怎样边下载宝贝图片边给图片添加自己的文字水印或图片水印

    今天小编要介绍一个比较常用的技巧,就是如何在下载商品图片时,给商品主图添加一些个性的水印或文字?一起来看看具体的操作步骤吧. 首先复制要抓取的商品链接地址 小编使用的下载图片工具(载图助手),打开进入 ...

  3. Facebook iOS 应用是如何加速图片显示的?

    本文讲的是Facebook iOS 应用是如何加速图片显示的?, 你的Facebook的动态消息中充满着一些关于你朋友.家人以及你所爱的人的照片,也许你会想要在手机上也能重温那些场景.我们一直在寻找提 ...

  4. iOS中 流媒体播放和下载 韩俊强的博客

    iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容 ...

  5. 微图App下载与安装教程

    <微图App>是<水经微图>的移动端,是作为数据采集和数据云同步必不可少的应用,该APP支持在Android和iOS系统上运行,暂时仅推出了Andriod版,后续会推出iOS版 ...

  6. iOS 9应用开发教程之显示编辑文本标签文本框

    iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将 ...

  7. iOS之网络数据下载和JSON解析

    iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据, 如何解析下载下来的JSON数据格式, 以及如何显示数据和图片的异步 ...

  8. pt100+51单片机的温控系统程序+仿真图 还带压力显示的

    pt100+51单片机的温控系统程序+仿真图 还带压力显示的 使用pt100测温度,经过放大器放大后的电压值乘以236就是实际的温度值0.42V对应100度,0V对应0度,经过ad运算显示出来,其他滤 ...

  9. 常见卫星图源下载教程

    文章目录 一.引言 二.在线地图源是简介 三.常见地信软件如何浏览与下载图源? (1)QGIS (2)arcgis pro (3)arcgis 四.各个图源的具体下载方法 (1)Google Eart ...

最新文章

  1. mysql 的 VARCHAR VARCHAR2
  2. 【阿里云课程】循环神经网络:RNN及其改进
  3. linux 配置tensorflow 全过程记录
  4. php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例
  5. java batch_Java EE 7 Batch中传递属性/参数的2种方式
  6. 【测试工具】禅道项目管理工具设置触发邮箱
  7. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  8. 阿里云轻量服务器 外网卡_阿里云服务器购买流程及注意事项
  9. 那些互联网IT岗位的招聘潜台词,能看到说明你是历经磨难的老司机
  10. NYOJ2-括号配对问题
  11. java 修改分辨率_JAVA程序分辨率修改及自适屏修改
  12. 经纬度(度分秒)坐标转换为小数格式(weixin公众号【图说GIS】)
  13. QQ音乐会员免费领取
  14. 帝国cms ajax,帝国CMS注册体验加强 ajax检测用户名和密码
  15. css中只读,是否可以通过CSS将输入字段设置为只读?
  16. 性能优化检测Instruments-time profile的使用
  17. 手机不小心把计算机隐藏了怎么恢复出厂设置,图标隐藏了怎么弄出来(手机图标隐藏了怎么恢复)...
  18. txt,csv,json互相转化
  19. java数据结构--hashset
  20. arcgis 导入 GML文件

热门文章

  1. yaf安装php.ini没效果,Yaf配置多模块不起作用,求助
  2. 解密:A股日内“T+0”赚钱的策略
  3. rails rake命令
  4. 5G NR PDCCH概述
  5. Ganglia 监控
  6. winform控件之maskedTextBox
  7. 简述SPI总线通信协议笔记
  8. 数据可视化:视觉感知与基本图表
  9. 怎样安装 手机撑控汽车一键启动无钥匙进入系统?
  10. android apdp分区,EXE版 KDZTools (无需安装Python)