图片加载-SDWebImage
2018-03-01 本文已影响0人
RichieQ
一、简介
SDWebImage作为一个优秀的图片加载框架,提供的使用方法和接口对开发者来说非常友好。其内部实现多是采用Block的方式来实现回调。主要功能和支持项如下
1、提供了一个UIImageView
的Category
用来加载网络图片并且对图片进行缓存管理
2、采用异步方式下载网络图片
3、采用异步方式,使用memory+disk来缓存图片,自动缓存管理
4、支持GIF动画
5、支持WebP个格式(新的图片格式,在于同等质量下体积小,提示网络传输效率)
6、同一个URL的网络图片不会被重复下载
7、失效的URL不会被无限重试,有个失效URL管理队列
8、耗时操作都在子线程,确保不会阻塞主线程
9、使用GCD和ARC
10、支持ARM64
二、流程图
三、使用
1.使用IImageView+WebCache category来加载UITableView中cell的图片
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
2.使用Blocks,采用这个方案可以在网络图片加载过程中得知图片的下载进度和图片加载成功与否
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
//... completion code here ...
}];
3.使用SDWebImageManager,SDWebImageManager为UIImageView+WebCache category的实现提供接口。
SDWebImageManager *manager = [SDWebImageManager sharedManager] ;
[manager downloadImageWithURL:imageURL options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
// progression tracking code
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
if (image) {
// do something with image
}
}];
4.加载图片还有使用SDWebImageDownloader和SDImageCache方式,但那个并不是我们经常用到的。基本上面所讲的3个方法都能满足需求。
内容摘自http://blog.csdn.net/larryluoshuai/article/details/68061592