#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<UITouch *> *)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 图片的下载顺序,默认是先进先出的
```