//
// ViewController.m
// SDWebImage2
//
// Created by xalo on 15/11/1.
// Copyright . All rights reserved.
//
#import "ViewController.h"
#import <SDWebImage/UIImageView+WebCache.h>
#import "SDWebImagePrefetcher.h"
#import "UIImage+GIF.h"
#import "SDImageCache.h"
@interface ViewController ()
@end
@implementation ViewController
- ( void )viewDidLoad {
[ super viewDidLoad ];
// Do any additional setup after loading the view, typically from a nib.
UIImageView *imageView = [[ UIImageView alloc ] init ];
imageView. frame = self . view . frame ;
// 使用 sd 获取图片
// 测试有缓存
// [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img4.cache.netease.com/photo/0003/2015-10-14/t_B5SEQS8F5PF60003.jpg"]];
// 添加占位符和 block 可以实现下载后的操作
// [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img3.cache.netease.com/photo/0003/2015-10-14/s_B5SEHJ7A00AJ0003.jpg"] placeholderImage:[UIImage imageNamed:@" 布道 1024.tif"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// NSLog( @" 这是 ");
// }];
/*!
* @author Vic_Li, 15-11-01 15:11:53
*
* 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,
*/
// 添加了选择 可以选择下载的选择
[imageView sd_setImageWithURL :[ NSURL URLWithString : @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ] placeholderImage :[ UIImage imageNamed : @" 布道 1024.tif" ] options : SDWebImageRetryFailed completed :^( UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imopageURL) {
NSLog ( @" 添加了 options 选项 " );
}];
// 重写 sd 的内部实步骤 可以实现在图片下载过程中完成相关自定义操作
SDWebImageManager *manager = [ SDWebImageManager sharedManager ]; // 单例创建 sd 管理器
// 证明就是用 url 作为他的 key
NSLog ( @"manager%@" , [manager cacheKeyForURL :[ NSURL URLWithString : @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ]]);
//
// [manager downloadImageWithURL:[NSURL URLWithString:@"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg"] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
//
// NSLog(@" 显示当前进度 ");
//
//
// } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
//
// NSLog(@" 下载完成 ");
//
// }];
// 获取 GIF 图片 -- 失败
// NSString *path = [[NSBundle mainBundle ]pathForResource:@"22222" ofType:@"gif"];
// NSData *imagdata = [NSData dataWithContentsOfFile:path];
UIImage *imnage = [UIImage sd_animatedGIFNamed:@"22222.gif"];
// UIImage *image = [UIImage sd_animatedGIFWithData:imagdata];
NSLog( @"%@", image);
[imageView setImage:image];
// imageView.image = image;
// NSLog( @"%@", image);
// NSLog( @"!!!%@", imageView.image);
// 提前下载 之后可以使用
// SDWebImagePrefetcher *Prefetcher = [SDWebImagePrefetcher sharedImagePrefetcher];// 创建预先下载
// [Prefetcher prefetchURLs:@[[NSURL URLWithString:@"http://tu.duowan.com/gallery/118191.html#"]] progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) {
// NSLog( @" 预先下载 ");
//
// } completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) {
// NSLog( @"block");
// }];
/*!
* @author Vic_Li, 15-11-01 17:11:00
*
* SD 缓存
*/
// 获取缓存大小
// SDWebImageManager *manager =[SDWebImageManager sharedManager];// 创建管理器
// SDWebImageManager 有一个 SDImageCache *imageCache; 属性
[manager.imageCache calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
NSLog( @"fileCount%ld,/n totalSize%ld" ,fileCount, totalSize);
}];
// 获取 diskcount 和大小 还是先调用的下面两个方法
[[SDImageCache sharedImageCache]getDiskCount];
[[SDImageCache sharedImageCache]getSize];
NSLog( @"getDiskCount%ld,/n getSize%ld" ,[[SDImageCache sharedImageCache]getDiskCount], [[SDImageCache sharedImageCache]getSize]);
// 获取缓存路径 - image 的 url 为 key
NSString *path1 =[[SDImageCache sharedImageCache]defaultCachePathForKey: @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ];
NSLog( @"path1%@" , path1);
NSString *path2 =[[SDImageCache sharedImageCache]cachePathForKey: @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" inPath: @"" ];
NSLog( @"path2%@" , path2);
// CGFloat tmpsize = [[SDImageCache sharedImageCache]checkTmpSize];
// 缓存清理
// 清理磁盘
// [[[SDWebImageManager sharedManager]imageCache]clearDisk];
// 清理内存
// [[[SDWebImageManager sharedManager]imageCache]clearMemory];
// 直接单例创建 SDImageCache
// [[SDImageCache sharedImageCache]clearDisk];
// [[SDImageCache sharedImageCache]clearMemory];
//
/*!
* @author Vic_Li, 15-11-01 17:11:27
*
* 不过这里要特别注意一下,在 IOS7 中你会发现使用这两个方法缓存总清除不干净,即使断网下还是会有数据。这是因为在 IOS7 中,缓存机制做了修改,使用上述两个方法只清除了 SDWebImage 的缓存,没有清除系统的缓存,所以我们可以在清除缓存的代理中额外添加以下:
*/
// 清理系统缓存
// [[NSURLCache sharedURLCache] removeAllCachedResponses];
[ self .view addSubview:imageView];
}
// ViewController.m
// SDWebImage2
//
// Created by xalo on 15/11/1.
// Copyright . All rights reserved.
//
#import "ViewController.h"
#import <SDWebImage/UIImageView+WebCache.h>
#import "SDWebImagePrefetcher.h"
#import "UIImage+GIF.h"
#import "SDImageCache.h"
@interface ViewController ()
@end
@implementation ViewController
- ( void )viewDidLoad {
[ super viewDidLoad ];
// Do any additional setup after loading the view, typically from a nib.
UIImageView *imageView = [[ UIImageView alloc ] init ];
imageView. frame = self . view . frame ;
// 使用 sd 获取图片
// 测试有缓存
// [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img4.cache.netease.com/photo/0003/2015-10-14/t_B5SEQS8F5PF60003.jpg"]];
// 添加占位符和 block 可以实现下载后的操作
// [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img3.cache.netease.com/photo/0003/2015-10-14/s_B5SEHJ7A00AJ0003.jpg"] placeholderImage:[UIImage imageNamed:@" 布道 1024.tif"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// NSLog( @" 这是 ");
// }];
/*!
* @author Vic_Li, 15-11-01 15:11:53
*
* 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,
*/
// 添加了选择 可以选择下载的选择
[imageView sd_setImageWithURL :[ NSURL URLWithString : @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ] placeholderImage :[ UIImage imageNamed : @" 布道 1024.tif" ] options : SDWebImageRetryFailed completed :^( UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imopageURL) {
NSLog ( @" 添加了 options 选项 " );
}];
// 重写 sd 的内部实步骤 可以实现在图片下载过程中完成相关自定义操作
SDWebImageManager *manager = [ SDWebImageManager sharedManager ]; // 单例创建 sd 管理器
// 证明就是用 url 作为他的 key
NSLog ( @"manager%@" , [manager cacheKeyForURL :[ NSURL URLWithString : @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ]]);
//
// [manager downloadImageWithURL:[NSURL URLWithString:@"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg"] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {
//
// NSLog(@" 显示当前进度 ");
//
//
// } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
//
// NSLog(@" 下载完成 ");
//
// }];
// 获取 GIF 图片 -- 失败
// NSString *path = [[NSBundle mainBundle ]pathForResource:@"22222" ofType:@"gif"];
// NSData *imagdata = [NSData dataWithContentsOfFile:path];
UIImage *imnage = [UIImage sd_animatedGIFNamed:@"22222.gif"];
// UIImage *image = [UIImage sd_animatedGIFWithData:imagdata];
NSLog( @"%@", image);
[imageView setImage:image];
// imageView.image = image;
// NSLog( @"%@", image);
// NSLog( @"!!!%@", imageView.image);
// 提前下载 之后可以使用
// SDWebImagePrefetcher *Prefetcher = [SDWebImagePrefetcher sharedImagePrefetcher];// 创建预先下载
// [Prefetcher prefetchURLs:@[[NSURL URLWithString:@"http://tu.duowan.com/gallery/118191.html#"]] progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) {
// NSLog( @" 预先下载 ");
//
// } completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) {
// NSLog( @"block");
// }];
/*!
* @author Vic_Li, 15-11-01 17:11:00
*
* SD 缓存
*/
// 获取缓存大小
// SDWebImageManager *manager =[SDWebImageManager sharedManager];// 创建管理器
// SDWebImageManager 有一个 SDImageCache *imageCache; 属性
[manager.imageCache calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
NSLog( @"fileCount%ld,/n totalSize%ld" ,fileCount, totalSize);
}];
// 获取 diskcount 和大小 还是先调用的下面两个方法
[[SDImageCache sharedImageCache]getDiskCount];
[[SDImageCache sharedImageCache]getSize];
NSLog( @"getDiskCount%ld,/n getSize%ld" ,[[SDImageCache sharedImageCache]getDiskCount], [[SDImageCache sharedImageCache]getSize]);
// 获取缓存路径 - image 的 url 为 key
NSString *path1 =[[SDImageCache sharedImageCache]defaultCachePathForKey: @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" ];
NSLog( @"path1%@" , path1);
NSString *path2 =[[SDImageCache sharedImageCache]cachePathForKey: @"http://img3.cache.netease.com/3g/2015/10/13/20151013175943e426d.jpg" inPath: @"" ];
NSLog( @"path2%@" , path2);
// CGFloat tmpsize = [[SDImageCache sharedImageCache]checkTmpSize];
// 缓存清理
// 清理磁盘
// [[[SDWebImageManager sharedManager]imageCache]clearDisk];
// 清理内存
// [[[SDWebImageManager sharedManager]imageCache]clearMemory];
// 直接单例创建 SDImageCache
// [[SDImageCache sharedImageCache]clearDisk];
// [[SDImageCache sharedImageCache]clearMemory];
//
/*!
* @author Vic_Li, 15-11-01 17:11:27
*
* 不过这里要特别注意一下,在 IOS7 中你会发现使用这两个方法缓存总清除不干净,即使断网下还是会有数据。这是因为在 IOS7 中,缓存机制做了修改,使用上述两个方法只清除了 SDWebImage 的缓存,没有清除系统的缓存,所以我们可以在清除缓存的代理中额外添加以下:
*/
// 清理系统缓存
// [[NSURLCache sharedURLCache] removeAllCachedResponses];
[ self .view addSubview:imageView];
}
@end