SD实践代码

//
//  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值