(1)下载图片且需要获取下载进度
#import "UIImageView+WebCache.h" - (void)download1 { [self.imageView sd_setImageWithURL:[NSURL URLWithString:@“url”] placeholderImage:[UIImage imageNamed:@"timg"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { //下载进度 } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { switch (cacheType) { case SDImageCacheTypeNone: NSLog(@"直接下载"); break; case SDImageCacheTypeDisk: NSLog(@"磁盘缓存"); break; case SDImageCacheTypeMemory: NSLog(@"内存缓存"); break; default: break; } }]; }
(2)只需要简单获得一张图片,不需要设置
#import "SDWebImageManager.h" - (void)download2 { [[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:@"url"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { //下载进度 NSLog(@"%f", 1.0* receivedSize / expectedSize); } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { //得到图片 self.imageView.image = image; }]; }
(3)不需要任何缓存处理
#import "SDWebImageDownloader.h" - (void)download3 { [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:@"url"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { //下载进度 } completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) { //线程间通信 [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.imageView.image = image; }]; }]; }
(4)播放gif文件
#import "UIImage+GIF.h" - (void)gif { UIImage *image = [UIImage sd_animatedGIFNamed:@"图片名称"]; self.imageView.image = image; }
(5)缓存处理
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { //1 清空缓存 //clearDisk:直接删除,重新创建 //cleanDisk:清除过期缓存,计算当前缓存的大小,和设置的最大缓存数量比较,如果超出那么会继续删除(按照文件创建的先后顺序) //过期时间:7天 [[SDWebImageManager sharedManager].imageCache cleanDisk]; //2 取消当前所有的操作 [[SDWebImageManager sharedManager] cancelAll]; }
(6)判断图片的类型
#import "NSData+ImageContentType.h" - (void)tyoe { NSData *imageData = [NSData dataWithContentsOfFile:@"文件路径"]; NSString *typeStr = [NSData sd_contentTypeForImageData:imageData]; }
(7)SDWebImage框架内部细节
最大并发数量:6
队列中任务的处理方式:先进先出
缓存文件的保存名称和处理:拿到图片的URL路径,对该路径进行md5加密
对内存警告的处理方式:内部通过监听通知的方式清理缓存
扫描二维码关注公众号,回复:
1088559 查看本文章
缓存处理的方式:NSCache
如何判断图片的类型:只匹配第一个字节
下载图片的方式:发送网络请求下载图片,NSURLConnection
请求超时的时间:15.0秒