在kingfisher中,清理缓存非常简单,代码如下
let cache = KingfisherManager.shared.cache
cache.clearDiskCache()//清除硬盘缓存
cache.clearMemoryCache()//清理网络缓存
cache.cleanExpiredDiskCache()//清理过期的,或者超过硬盘限制大小的
默认情况,kingfisher先从内存中去,再去硬盘中取,如果都没有,才会下载,但是如果不想使用缓存,就要用KingfisherOptionsInfo这个来设定了,来个🌰
self.backImageView.kf.setImage(with: ImageResource.init(downloadURL: URL.init(string: imageURL)!), placeholder: nil, options: [KingfisherOptionsInfoItem.transition(ImageTransition.fade(1)), KingfisherOptionsInfoItem.forceRefresh], progressBlock: nil, completionHandler: nil)
在这里,options参数,是一个存了KingfisherOptionsInfoItem枚举值的数组,这里,要写KingfisherOptionsInfoItem的枚举值,可以写多个,这里,fade是一个动画(淡出显示的动画),forceRefresh这个是每次都从网络获取,还有很多可以自己进库文件看。
kf.setImage返回的是一个task任务(类似系统的session任务),这个任务是可以取消的(不过一般这个也没用到过)
self.backImageView.kf.setImage(with: ImageResource.init(downloadURL: URL.init(string: imageURL)!), placeholder: nil, options: [KingfisherOptionsInfoItem.transition(ImageTransition.fade(1)), KingfisherOptionsInfoItem.forceRefresh], progressBlock: nil, completionHandler: nil).cancel()
参数说明:
progressBlock是下载进度,completionHandler是完成回调。
OK,到这里,使用Kingfisher来处理网络图片这一块,基本的用法已经好了。想要方了解更多的用法,可以访问onevcat的github:https://github.com/onevcat/Kingfisher/