swift中,网络图片库比较常用的是kingfisher和alamofireimage,个人感觉alamofireimage有点大,另外kingfisher是基于SDWebimage的,oc转swift的话语法也比较熟悉,大神onevcat已经为我们做好了缓存处理,非常实用,已经支持了swift3
有两种方法可以安装Kingfisher库
1、用pod
podfile里边键入
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
target 'projectName' do
use_frameworks!
pod 'Kingfisher', '~> 3.2’
end
2、用carthage
cartfile里边键入
github "onevcat/Kingfisher" ~> 3.2
Kingfisher最新的,没有了之前那个直接用url请求的方法,取代的是
setImage(with: Resource?, placeholder: Image?, options: KingfisherOptionsInfo?, progressBlock: DownloadProgressBlock?, completionHandler: CompletionHandler?)
需要注意的是,在这里,Resource只是一个协议,由cacheKey和downloadURL组成的,kingfisher默认是将url作为cacheKey,也可以自己定义一个cacheKey。
来一个例子,来看看Resource这个参数怎么写
let url = URL(string: "http://pic29.nipic.com/20130512/12428836_110546647149_2.jpg")
imagev.kf.setImage(with: ImageResource.init(downloadURL: url!))
kingfisher里边,是ImageResource遵循了Resource协议,这里,需要这样初始化,有很多同学想,为何我在Resource后边写init没有提示,原因就在这里,他只是一个协议,不是一个类型。
如果想写出来就可以有提示,可以自己封装一个方法,封装方法就不写了,很简单的只是传入参数做一下处理。(由于时间原因,关于kingfisher的缓存这部分没来得及,以后补上☺☺)