Kingfisher 和 swift 3 - 无法使用 url 设置图像
Kingfisher and swift 3 - cannot set image with url
查看文档和迁移指南,我应该可以使用以下代码设置新图像:
imageView.kf.setImage(with:url ...)
但实际上我在库中找不到这个方法,我只看到:
imageView.kf.setImage(with:Resource... )
我不知道这个资源应该如何工作,因为我在文档中找不到任何内容。
Resource
是一个协议。 URL
已扩展以符合此协议。所以你可以这样做:
let url = URL(string: ...)!
imageView.kf.setImage(with: url)
如果您想控制 Kingfisher 在其缓存中使用的密钥,您可以使用 ImageResource
:
let identifier = "..."
let url = URL(string: "http://example.com/images/identifier=\(identifier)")!
let resource = ImageResource(downloadURL: url, cacheKey: identifier)
imageView.kf.setImage(with: resource)
我用这个解决了这个问题:
PhotoHelper.shared.imagePickedBlock = { [weak self] (image, url) in
self?.imageView.kf.setImage(with: url, placeholder: image, options: nil, progressBlock: nil, completionHandler: { imageResult, error, type, cache in
self?.imageView.image = image
})
}
PhotoHelper 是原生图像选择器的包装器:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
currentVC.dismiss(animated: true, completion: {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
let url = info[UIImagePickerControllerReferenceURL] as! URL
self.imagePickedBlock?(image, url)
}
})
}
对于Swift4.2
import Kingfisher
extension UIImageView {
func setImage(with urlString: String){
guard let url = URL.init(string: urlString) else {
return
}
let resource = ImageResource(downloadURL: url, cacheKey: urlString)
var kf = self.kf
kf.indicatorType = .activity
self.kf.setImage(with: resource)
}
}
使用方法
self.imgVw.setImage(with: your image url)
查看文档和迁移指南,我应该可以使用以下代码设置新图像:
imageView.kf.setImage(with:url ...)
但实际上我在库中找不到这个方法,我只看到:
imageView.kf.setImage(with:Resource... )
我不知道这个资源应该如何工作,因为我在文档中找不到任何内容。
Resource
是一个协议。 URL
已扩展以符合此协议。所以你可以这样做:
let url = URL(string: ...)!
imageView.kf.setImage(with: url)
如果您想控制 Kingfisher 在其缓存中使用的密钥,您可以使用 ImageResource
:
let identifier = "..."
let url = URL(string: "http://example.com/images/identifier=\(identifier)")!
let resource = ImageResource(downloadURL: url, cacheKey: identifier)
imageView.kf.setImage(with: resource)
我用这个解决了这个问题:
PhotoHelper.shared.imagePickedBlock = { [weak self] (image, url) in
self?.imageView.kf.setImage(with: url, placeholder: image, options: nil, progressBlock: nil, completionHandler: { imageResult, error, type, cache in
self?.imageView.image = image
})
}
PhotoHelper 是原生图像选择器的包装器:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
currentVC.dismiss(animated: true, completion: {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
let url = info[UIImagePickerControllerReferenceURL] as! URL
self.imagePickedBlock?(image, url)
}
})
}
对于Swift4.2
import Kingfisher
extension UIImageView {
func setImage(with urlString: String){
guard let url = URL.init(string: urlString) else {
return
}
let resource = ImageResource(downloadURL: url, cacheKey: urlString)
var kf = self.kf
kf.indicatorType = .activity
self.kf.setImage(with: resource)
}
}
使用方法
self.imgVw.setImage(with: your image url)