iOS 第三方框架SDWebImage学习
2015-04-22 23:04
531 查看
github上得源码下载地址:SDWebImage
比较详细的一篇介绍:详情
附图:
2.非ARC版本
非ARC版本需要设置一些参数,否则会报编译错误
可以在https://github.com/rs/SDWebImage这个网站上下载SDWebImage开源包,加到我们的工程中。command+b一下会有8个错误,这时候我们导入MapKit.framework、ImageIO.framework两个框架就好了。然后#import
以下转载自:http://blog.csdn.net/zeng11088/article/details/8554227
SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒!
这套开源框架还是蛮重要的, 涉及到异步加载图片源和自动缓存.
我们如果能够熟练使用其API 就可以实现很多复杂的需求了.
作者依旧在更新,目前3.0 版本已经非常强大! 简化了更多API接口.加强了下载类,支持多个文件同时下载,内置了下载进度功能.等
github托管地址如下:
https://github.com/rs/SDWebImage
SDWebImage API 文档入口(英文的,蛋疼,如果中文的话,估计咱也不写这篇文章了,要么也很短.):
http://hackemist.com/SDWebImage/doc/
如果你只是匆匆忙忙下载了一个framework 就回到了自己工程,可能会遇到无法使用的情况:那么下面的文章来解决你遇到的问题:
/article/8316820.html
里面提到一句,使用这类代码的时候,最好预先看看Readme(使用说明)
1:引入系统框架 ImageIO.framework.
2:framework 引入头文件的方式如下:
[csharp] view
plaincopy
#import<SDWebImage/UIImageView+WebCache.h>
3:Build Settings->Other Linker Flags->-ObjC or-all_load
以上三部设置之后,就可以开始写代码了.
接下来介绍使用到的各个类库功能说明:
SDWebImageDownloader
这个下载器改版很大,现在里面就一个方法,就是发起前往下载图片的函数:
[csharp] view
plaincopy
[[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
新版本的管理类的改动也相当大,而且就一个方法了,如下:
[csharp] view
plaincopy
[[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 的复杂
/article/1822345.html
比较详细的一篇介绍:详情
NSLog(@"%@",NSHomeDirectory());输出下这个程序的沙盒路径。
1. 根据官方demo ARC版本,经过我的整理 :下载地址附图:
2.非ARC版本
非ARC版本需要设置一些参数,否则会报编译错误
可以在https://github.com/rs/SDWebImage这个网站上下载SDWebImage开源包,加到我们的工程中。command+b一下会有8个错误,这时候我们导入MapKit.framework、ImageIO.framework两个框架就好了。然后#import
"UIImageView+WebCache.h"一下就OK了。UIImageView+WebCache类是对UIImageView的扩展,所以这个类里的方法直接可以你所创建的UIImageView的对象调用。我们在网上找一个图片点右键复制它的网址。
使用- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder success:(void (^)(UIImage *image))success failure:(void (^)(NSError *error))failure;方法,简单的下载一个图片它会自己做缓存。
代码如下:
[imageView setImageWithURL:[NSURL URLWithString:@"http://www.fzlol.com/upimg/allimg/120819/2021144O91.jpg"] placeholderImage:[UIImage imageNamed:@"有种想念叫做避而不见.jpg"] success:^(UIImage *image){} failure:^(NSError *error){}
];
为了检查一下它有没有做缓存,我们用NSLog(@"%@",NSHomeDirectory());输出下这个程序的沙盒路径。桌面上的Finder图标,桌面的左上角的菜单栏有前往,用鼠标点一下前往,按alt键会出前往下面会多一个选项资源库。打开资源库按照打印的路径找到沙盒文件夹,打开Library,再打开Caches文件夹,会发现imageCache文件夹。打开它后会发现一文件,双击打开就是我们下载的图片。
简单的研究就到这里啦~~~~简单的Demo可以提供下载网址如下(欢迎下载):
http://dl.vmall.com/c08aaaw651
以下转载自:http://blog.csdn.net/zeng11088/article/details/8554227 SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒!
这套开源框架还是蛮重要的, 涉及到异步加载图片源和自动缓存.
我们如果能够熟练使用其API 就可以实现很多复杂的需求了.
作者依旧在更新,目前3.0 版本已经非常强大! 简化了更多API接口.加强了下载类,支持多个文件同时下载,内置了下载进度功能.等
github托管地址如下:
https://github.com/rs/SDWebImage
SDWebImage API 文档入口(英文的,蛋疼,如果中文的话,估计咱也不写这篇文章了,要么也很短.):
http://hackemist.com/SDWebImage/doc/
如果你只是匆匆忙忙下载了一个framework 就回到了自己工程,可能会遇到无法使用的情况:那么下面的文章来解决你遇到的问题:
/article/8316820.html
里面提到一句,使用这类代码的时候,最好预先看看Readme(使用说明)
1:引入系统框架 ImageIO.framework.
2:framework 引入头文件的方式如下:
[csharp] view
plaincopy
#import<SDWebImage/UIImageView+WebCache.h>
3:Build Settings->Other Linker Flags->-ObjC or-all_load
以上三部设置之后,就可以开始写代码了.
接下来介绍使用到的各个类库功能说明:
SDWebImageDownloader
这个下载器改版很大,现在里面就一个方法,就是发起前往下载图片的函数:
[csharp] view
plaincopy
[[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
新版本的管理类的改动也相当大,而且就一个方法了,如下:
[csharp] view
plaincopy
[[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 的复杂
/article/1822345.html
相关文章推荐
- IOS学习 第三方框架 SDWebImage ARC与MRC混编
- ios第三方开源框架学习——SDWebImage的使用
- iOS 第三方框架SDWebImage的简单使用
- iOS边练边学--多线程练习的多图片下载 以及 使用第三方框架(SDWebImage)的多图片下载
- iOS 第三方框架 - SDWebImage 原理及使用
- iOS 第三方框架SDWebImage的简单使用
- 【iOS开发】关于图片加载的第三方框架SDWebImage的使用
- iOS UITableViewCell 多线程 网络+沙盒的图片加载以及第三方框架SDWebImage方式加载
- iOS:网络编程的第三方框架:AFNetworking、SDWebImage
- ios学习----------SDWebImage框架解析(3)
- IOS常用第三方框架 --- SDWebImage 图片异步加载及缓存
- iOS学习----------SDWebImage框架解析(2)
- iOS第三方学习1-SDWebImage学习和使用
- iOS学习----------SDWebImage框架解析(1)
- iOS开发——优秀的第三方框架之SDWebImage
- iOS第三方框架: 使用SDWebImage 加载不出图片
- iOS 第三方框架-SDWebImage
- 【iOS开发-96】网络请求总结,深浅拷贝copy和mutableCopy,SDWebImage图像下载第三方框架
- 第三方框架SDWebImage学习
- iOS 第三方框架-SDWebImage解读