1.问题:
使用SDWebImageManager的downloadImage函数下载图片时不缓存图片到沙盒(但sd_setImage函数会下载图片和缓存图片)。
2.分析
在单独使用SDWebImageManager.shared().imageDownloader?.downloadImage下载图片时(),不会自动保存已经下载的图片到沙盒缓存起来是因为内部没有调用保存图片storeImage函数(参考SDWebImage流程图)。
因此使用SDWebImageManager.shared().imageCache?.imageFromCache(forKey: String)时也无法正常获取图片,更别提获取图片尺寸了(比如图片布局时)。
SDWebImage流程图3.解决
在该downloadImage函数下载完成的闭包里手动调用保存图片函数即可,例如SDWebImageManager.shared().saveImage(toCache: image, for: url.absoluteURL),该函数底层会调用SDImageCache的storeImage方法(方法即函数,称呼是不是很乱?凑合看吧)。
网友评论