开源框架:SDWebImage
http://blog.csdn.net/uxyheaven/article/details/7909373
SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒!
这套开源框架还是蛮重要的, 涉及到异步加载图片源和自动缓存.
我们如果能够熟练使用其API 就可以实现很多复杂的需求了.
作者依旧在更新,目前3.0 版本已经非常强大! 简化了更多API接口.加强了下载类,支持多个文件同时下载,内置了下载进度功能.等
github托管地址如下:
https://github.com/rs/SDWebImage
SDWebImage API 文档入口(英文的,蛋疼,如果中文的话,估计咱也不写这篇文章了,要么也很短.):
http://hackemist.com/SDWebImage/doc/
如果你只是匆匆忙忙下载了一个framework 就回到了自己工程,可能会遇到无法使用的情况:那么下面的文章来解决你遇到的问题:
http://blog.csdn.net/qjlhlh/article/details/8191111
里面提到一句,使用这类代码的时候,最好预先看看Readme(使用说明)
1:引入系统框架 ImageIO.framework.
2:framework 引入头文件的方式如下:
- #import<SDWebImage/UIImageView+WebCache.h>
3:Build Settings->Other Linker Flags->-ObjC or-all_load
以上三部设置之后,就可以开始写代码了.
接下来介绍使用到的各个类库功能说明:
SDWebImageDownloader
这个下载器改版很大,现在里面就一个方法,就是发起前往下载图片的函数:
- [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:imageUrl options:SDWebImageDownloaderProgressiveDownload progress:^(NSUInteger receivedSize, long long expectedSize) {
- NSLog(@"%u %lld",receivedSize,expectedSize);
- } completed:^(UIImage *aImage, NSData *data, NSError *error, BOOL finished) {
- //self.image = aImage;
- NSLog(@"成功了:%d",UIImageJPEGRepresentation(aImage, 1).length);
- }];
里面大部分参数属于一看就懂的,进度Block返回的信息有两个参数:1:下载进度. 2:文件大小.
我这里解释一下里面的options枚举的作用
SDWebImageDownloaderOptions
1:SDWebImageDownloaderLowPriority 这个属于默认的使用模式了,前往下载,返回进度Block信息,完成时调用completedBlock
2:SDWebImageDownloaderProgressiveDownload 这个是新版本加的功能,设置后,在返回进度Block的同时,返回completedBlock,里面的UIImage就是当前下载时的图片,可以实现将图片一点点显示出来的功能.
人世间最难的莫过于理解了! 开句玩笑^^
那么SDWebImageDownloader 在新版本的中的分工很明确,只做一件事情,那就是下载,只是下载而已,所以,下载成功以后的图片资源是不会自动缓存的.
如果要缓存,这里需要使用到
SDImageCache
SDImageCacheType 当下载请求结束时,通过这个枚举来告知图片的来源
1:SDImageCacheTypeNone 网络
2:SDImageCacheTypeDisk 设备硬盘
3:SDImageCacheTypeMemory 内存
将上面两步骤的需求合并可直接使用
SDWebImageManager
新版本的管理类的改动也相当大,而且就一个方法了,如下:
- [[SDWebImageManager sharedManager] downloadWithURL:imageUrl options:SDWebImageLowPriority progress:^(NSUInteger receivedSize, long long expectedSize) {
- NSLog(@"%u %lld",receivedSize,expectedSize);
- } completed:^(UIImage *aImage, NSError *error, SDImageCacheType cacheType, BOOL finished) {
- self.image = aImage;
- NSLog(@"成功了:%d",UIImageJPEGRepresentation(aImage, 1).length);
- }];
这样发起的下载请求,就会自动缓存图片资源了.
那么任何发起的下载请求,都会返回一个代理. 这个写法很神奇,值得深究啊.
也就是:SDWebImageOperation 将这个委托缓存一下,做什么用呢?一件事情,取消下载请求.
这边文章介绍了整个SDWebImage的运作原理,你看完之后,一定会说:真TMD 的复杂
http://blog.csdn.net/uxyheaven/article/details/7909373
开源框架:SDWebImage的更多相关文章
- iOS常用第三方开源框架和优秀开发者博客等
博客收藏iOS开发过程好的开源框架.开源项目.Xcode工具插件.Mac软件.文章等,会不断更新维护,希望对你们有帮助.如果有推荐或者建议,请到此处提交推荐或者联系我. 该文档已提交GitHub,点击 ...
- iOS开源 框架
UI界面类项目: Panoramagl ——720全景展示 Panorama viewer library foriPhone, iPad and iPod touch MBProgressHUD — ...
- iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇
iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...
- IOS-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34 阅读:533 评论:0 收藏:0 [点我收藏+] ...
- iOS开发-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
- 值得推荐的android开源框架
1.volley 项目地址https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) ...
- 介绍一个非常好用的跨平台C++开源框架:openFrameworks
介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...
- iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇
完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MV ...
随机推荐
- Python【requests】第三方模块
import requests print("===============get请求================")url = 'http://api.nnzhp.cn/ap ...
- 用Anaconda安装本地python包
Anaconda确实带来了很多方便,但是之前也过多的依赖了conda自带的一键下载python包的功能.这不,这几天突然要用FastFM这个包,无奈conda里没有,于是只能从github下载下来,实 ...
- linux服务器上没有jar命令
在linux服务器上用jar命令解压jar包时,提示找不到jar命令. 但是用java -version查看jdk版本,又可以显示出jdk版本. echo $JAVA_HOME查看环境变量路径,找不到 ...
- http协议POST请求头content-type主要的四种取值
介绍: 在此之前对content-type理解很肤浅,因此必须记录下来现在的理解,以便回顾 Content-Type,从名字上可以理解为内容类型,但在互联网上专业术语叫“媒体类型”,即MediaTyp ...
- 《Two Dozen Short Lessons in Haskell》(二十二)递归
<Two Dozen Short Lessons in Haskell>(Copyright © 1995, 1996, 1997 by Rex Page,有人翻译为Haskell二十四学 ...
- [整理]C结构实现位段(bit field)
#include <stdio.h> #include <string.h> typedef struct A{ int a:5; int b:3; unsigned c:8; ...
- Java开发者应该列入年度计划的5件事
本文写了我今年计划要做的5件事.为了能跟踪计划执行的进度,就把这些事都列了出来.我觉得这些事对其它Java开发者而言也是不错的参考方向. 1.开发一个应用,通过Java来操作一种NoSQL数据库实现存 ...
- windows下安装pip和easy_install
1. 从这里下载 get-pip.py: https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py 2. python ...
- func_get_args()获取参数
php中func_get_args()可以获取多个参数,讲多个参数放在数组里面. <?php function show() { $attr = func_get_args();//获取输入的参 ...
- 判断html是否含有图片
核心代码: $url="http://XXXXX/article/012.html"; $content=file_get_contents($url); //读取文章页面源代码 ...