#import "SDWebImage/UIImageView+WebCache.h"
//图片缓存的基本方法 [cell.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr]];
//用block 可以在图片加载完成之后做些事情 [cell.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { NSLog(@"图片加载完成后需要做的事情"); }];
//常用这个,为的是当网速不给力的时候,默认出来的是本地图片,用户体验比较好不会出来大白板的现象 [cell.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"my_account_icon.png"]];
在这个demo中我就选用了这个方法具体代码如下图:
如果你此时运行工程,图片是加载不出来的,因为iOS9网络适配更改为更为安全的HTTPS了,此时如果去解析HTTP开头的网址内容是显示不出来的,需要开发者做一下简单的设置:比较简单的方法:在info.plist-->Open As-->Source Code中添加一段代码即可:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
4.sd_setImageWithURL: placeholderImage: completed:
//使用默认图片,而且用block 在完成后做一些事情 [cell.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"my_account_icon.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { NSLog(@"图片加载完成后需要做的事情"); }];
//options选择相应的方式:枚举值 [cell.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"my_account_icon.png"] options:SDWebImageRetryFailed];
其他的在这里我就不一一介绍了,OC文档相信大家一看到方法名都有种见名知意的感觉,除了options带选项的方法,其他的都是综合存储,也就是内存缓存和磁盘缓存结合的方式,例如:如果你只需要如果你只需要内存缓存,那么在options这里选择SDWebImageCacheMemoryOnly就可以了。
接下来我要解释options的所有选项,以及SDWebImage内部执行流程。
1>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,
1>SDWebImage的内部实现过程
OK,SDWebImage的情况大致就这些了,后续有时间咱们再细聊。。。