github托管地址https://github.com/rs/SDWebImage
对于初级来说,用sd_setImageWithURL:的若干个方法就可以实现很好的图片缓存
//options 选择方式//失败后重试//这个标志可以渐进式下载,显示的图像是逐步在下载
[img sd_setImageWithURL:imagePath1
placeholderImage:[UIImage imageNamed:@"default"]
options:SDWebImageRetryFailed|SDWebImageProgressiveDownload];
第一步,下载SDWebImage,导入工程。
第二步,在prefix-Header里 #import "UIImageView+WebCache.h"
第三步,调用sd_setImageWithURL:方法缓存图片
//图片缓存的基本代码,就是这么简单
[self.image1 sd_setImageWithURL:imagePath1];
//给一张默认图片,先使用默认图片,当图片加载完成后再替换
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
//用block 可以在图片加载完成之后做些事情
[self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"这里可以在图片加载完成之后做些事情");
}];
//使用默认图片,而且用block 在完成后做一些事情
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"图片加载完成后做的事情");
}];
//options 选择方式
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] options:SDWebImageRetryFailed];
//比如在下载某个图片的过程中要响应一个事件,就覆盖这个方法
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:imagePath2 options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
NSLog(@"显示当前进度");
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
NSLog(@"下载完成");
}];
options所有选项:
//失败后重试
SDWebImageRetryFailed = 1 << 0,
//UI交互期间开始下载,导致延迟下载比如UIScrollView减速。
SDWebImageLowPriority = 1 << 1,
//只进行内存缓存--
SDWebImageCacheMemoryOnly = 1 << 2,
//这个标志可以渐进式下载,显示的图像是逐步在下载
SDWebImageProgressiveDownload = 1 << 3,
//刷新缓存
SDWebImageRefreshCached = 1 << 4,
//后台下载
SDWebImageContinueInBackground = 1 << 5,
//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
SDWebImageHandleCookies = 1 << 6,
//允许使用无效的SSL证书
//SDWebImageAllowInvalidSSLCertificates = 1 << 7,
//优先下载
SDWebImageHighPriority = 1 << 8,
//延迟占位符
SDWebImageDelayPlaceholder = 1 << 9,
//改变动画形象
SDWebImageTransformAnimatedImage = 1 << 10,
清除缓存
SDWebImage缓存的相关操作主要通过SDImageCache这个类实现
//获取缓存大小--缓存周期1周
float catchSize = 0.0
catchSize = [[SDImageCache sharedImageCache]getSize]/1024.0/1024.0;
if (catchSize > 1) {
NSLog(@"%.1fM",catchSize);
}else{
NSLog(@"%.1fk",catchSize * 1024.0);
}
//清理缓存
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
//清空缓存操作
}];
1,SDWebImage和AFN关键字冲突--http://www.jianshu.com/p/80e8a1017ac8