模仿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实现异步加载图片相关推荐

  1. UI一揽子计划 21 (UICollectionView、SDWebImage第三方类库加载图片的使用、集合视图的布局UICollectionViewFlowLayout 、自定义Cell、布局协议

    Pro : SDWebImage第三方类库加载图片的使用: 1.在MRC 环境下 使用ARC 的类库: -fobjc-arc   (Build Phases  --> Compile Sourc ...

  2. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

  3. LruCache缓存处理及异步加载图片类的封装

    Android中的缓存处理及异步加载图片类的封装   一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端 ...

  4. android开发小技巧:实现listview异步加载图片

    2019独角兽企业重金招聘Python工程师标准>>> 针对listview异步加载图片这个问题,麦子学院android开发老师讲了一种非常实用的方法,麦子学院android开发老师 ...

  5. [置顶] 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅

    转载请注明出处http://blog.csdn.net/xiaanming/article/details/9825113 异步加载图片的例子,网上也比较多,大部分用了HashMap<Strin ...

  6. Android 开发笔记 ListView异步加载图片

    当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...

  7. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  8. IOS中UITableView异步加载图片的实现

    本文转载至 http://blog.csdn.net/enuola/article/details/8639404  最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个E ...

  9. android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...

    众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...

最新文章

  1. 写入和读取图片(c# asp.net sqlserver)
  2. c语言c++语言中静态变量,函数详解
  3. NT式驱动和WDM式驱动程序
  4. c语言i o编程,C 语言输入输出 (I/O)
  5. python中bind的用法_JS中的apply、call和bind的用法和区别
  6. Python开发【第六篇】:模块
  7. kettle java代码详解_kettle 如何使用java代码
  8. cocos2d 字体颜色
  9. netbeans如何导入java项目_netbeans导入java项目
  10. 理解ASP.NET Core - 发送Http请求(HttpClient)
  11. 一些融会贯通的知识点----持续更新
  12. html中如何访问ftp中的图片,CSS FTP上传网页图解教程
  13. 空教室php,空教室空教室里,上了特殊的“最后一课”里,上了特殊的“最后一课”...
  14. SNS游戏中的数据特征随笔
  15. java新闻分页,实现分页功能的JavaBean
  16. 【数学知识】函数与复合函数编程实现
  17. Android音乐播放器(一)启动动画
  18. 在线学习Node.js——Day6
  19. 网络程序设计结课总结——神经网络篇
  20. linux ospf 命令,用bird 在linux netns里配置ospf两个点互相发现

热门文章

  1. puppet 自定义facter
  2. C#正则表达式:移除文本中所有方括号和其中的内容
  3. 使用内存映射文件来提高你程序的性能
  4. CSS3 background-size图片自适应
  5. Docker registry V2
  6. javascript 正则表达式详解
  7. 推荐 正则表达式入门教程
  8. iOS编程(双语版) - 视图 - 基本概念
  9. laravel Transformers中修改data键
  10. SAP事务码MM17物料主数据批量维护