模仿SDWebImage实现异步加载图片
模仿SDWebImage实现异步加载图片
SDWebImage想必大家都不陌生吧,要实现它的图片异步加载功能这个还是很简单的.
注意:此处我只实现了异步加载图片,并没有将文件缓存到本地的打算哦:)
源码:
UIImageView+YXImageView.h
// // UIImageView+YXImageView.h // PicDemo // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h>@interface UIImageView (YXImageView)- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder;@end
UIImageView+YXImageView.m
// // UIImageView+YXImageView.m // PicDemo // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "UIImageView+YXImageView.h"@implementation UIImageView (YXImageView)- (void)setImageWithURL:(NSString *)url placeholderImage:(UIImage *)placeholder {// 先设置placeholderself.image = placeholder;// 异步下载完了之后再加载新的图片if (url){// 子线程下载dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];NSData *data = [NSURLConnection sendSynchronousRequest:requestreturningResponse:nilerror:nil];// 主线程更新dispatch_async(dispatch_get_main_queue(), ^{if (data){self.image = [UIImage imageWithData:data];[self setNeedsDisplay];}});});} }@end
使用的源码:
RootViewController.m
// // RootViewController.m // PicDemo // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" #import "UIImageView+YXImageView.h"@interface RootViewController ()@end@implementation RootViewController- (void)viewDidLoad {[super viewDidLoad];UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];[self.view addSubview:imageView];[imageView setImageWithURL:@"http://pic.cnitblog.com/avatar/572952/20140226185251.png"placeholderImage:[UIImage imageNamed:@"1.png"]]; }@end
核心代码:
GCD部分就不讲解了,关键的一步是需要重绘view本身,这个涨知识了:)
除了下载图片,你还可以做其他操作呢:)
模仿SDWebImage实现异步加载图片相关推荐
- UI一揽子计划 21 (UICollectionView、SDWebImage第三方类库加载图片的使用、集合视图的布局UICollectionViewFlowLayout 、自定义Cell、布局协议
Pro : SDWebImage第三方类库加载图片的使用: 1.在MRC 环境下 使用ARC 的类库: -fobjc-arc (Build Phases --> Compile Sourc ...
- Android实现ListView异步加载图片
转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...
- LruCache缓存处理及异步加载图片类的封装
Android中的缓存处理及异步加载图片类的封装 一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端 ...
- android开发小技巧:实现listview异步加载图片
2019独角兽企业重金招聘Python工程师标准>>> 针对listview异步加载图片这个问题,麦子学院android开发老师讲了一种非常实用的方法,麦子学院android开发老师 ...
- [置顶] 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
转载请注明出处http://blog.csdn.net/xiaanming/article/details/9825113 异步加载图片的例子,网上也比较多,大部分用了HashMap<Strin ...
- Android 开发笔记 ListView异步加载图片
当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...
- Android ListView异步加载图片乱序问题,原因分析及解决方案
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...
- IOS中UITableView异步加载图片的实现
本文转载至 http://blog.csdn.net/enuola/article/details/8639404 最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个E ...
- android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...
众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...
最新文章
- 写入和读取图片(c# asp.net sqlserver)
- c语言c++语言中静态变量,函数详解
- NT式驱动和WDM式驱动程序
- c语言i o编程,C 语言输入输出 (I/O)
- python中bind的用法_JS中的apply、call和bind的用法和区别
- Python开发【第六篇】:模块
- kettle java代码详解_kettle 如何使用java代码
- cocos2d 字体颜色
- netbeans如何导入java项目_netbeans导入java项目
- 理解ASP.NET Core - 发送Http请求(HttpClient)
- 一些融会贯通的知识点----持续更新
- html中如何访问ftp中的图片,CSS FTP上传网页图解教程
- 空教室php,空教室空教室里,上了特殊的“最后一课”里,上了特殊的“最后一课”...
- SNS游戏中的数据特征随笔
- java新闻分页,实现分页功能的JavaBean
- 【数学知识】函数与复合函数编程实现
- Android音乐播放器(一)启动动画
- 在线学习Node.js——Day6
- 网络程序设计结课总结——神经网络篇
- linux ospf 命令,用bird 在linux netns里配置ospf两个点互相发现