SDWebImage的使用和剖析

#import "ViewController.h"
#import "UIImageView+WebCache.h"
#import "UIImage+GIF.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self download2];
}
/**
 *  加载图片,打印下载速度
 */
-(void)download1
{
    [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img4.duitang.com/uploads/blog/201310/18/20131018213446_smUw4.thumb.600_0.jpeg"] placeholderImage:[UIImage imageNamed:@"7FCCC825B60E5074DE923171542FF637"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
        NSLog(@"%f",1.0 * receivedSize / expectedSize );
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        switch (cacheType) {
            
            case 0:
                NSLog(@"网络下载");
                break;
            case 1:
                NSLog(@"磁盘缓存");
                break;
            case 2:
                NSLog(@"内存缓存");
                break;
             
        }
        
        self.imageView.image = image;
    }];
}
/**
 *  加载GIF
 */
-(void)download2
{
    UIImage *image = [UIImage sd_animatedGIFNamed:@"39e805d5ad6eddc4f80259d23bdbb6fd536633ca"];
    self.imageView.image = image;
}
  • 清空缓存和取消操作方法

#import "AppDelegate.h"
#import "SDWebImageManager.h"
@interface AppDelegate ()

@end

@implementation AppDelegate
//当内存发出警报的时候调用该方法,在这个方法里需要清除缓存或内存
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    /**
     *  清空缓存操作
     cleanDisk:删除过期的文件数据,计算当前未过期的已经下载的文件数据的大小,如果发现该数据大小大于我们设置的最大缓存数据大小,那么程序内部会按照按文件数据缓存的时间从远到近删除,直到小于最大缓存数据为止。
     clearMemory:直接删除文件,重新创建新的文件夹
     */
    [[SDWebImageManager sharedManager].imageCache cleanDisk];
    [[SDWebImageManager sharedManager].imageCache clearMemory];
    /**
     *  取消当前所有的操作
     */
    [[SDWebImageManager sharedManager] cancelAll];
    
}
@end
```
- ###SDWebImage的一些常见问题

```

    04 SDWebImage默认的缓存时间是1周
    05 如何播放gif图片
    /*
    5-1 把用户传入的gif图片->NSData
    5-2 根据该Data创建一个图片数据源(NSData->CFImageSourceRef)
    5-3 计算该数据源中一共有多少帧,把每一帧数据取出来放到图片数组中
    5-4 根据得到的数组+计算的动画时间-》可动画的image
    [UIImage animatedImageWithImages:images duration:duration];
    */

    06 如何判断当前图片类型,只判断图片二进制数据的第一个字节
    + (NSString *)sd_contentTypeForImageData:(NSData *)data;
    07 内部如何进行缓存处理?使用了NSCache类,使用和NSDictionary类似
    08 沙盒缓存图片的命名方式为对该图片的URL进行MD5加密  echo -n "url" |MD5
    09 当接收到内存警告之后,内部会自动清理内存缓存
    10 图片的下载顺序,默认是先进先出的
```

你可能感兴趣的:(SDWebImage的使用和剖析)