cache - sdwebimage ios
Obtén UIImage solo con la biblioteca de Kingfisher (5)
Con la nueva versión de Swift 3 puedes usar ImageDownloader:
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
print("Downloaded Image: /(image)")
}
ImageDownloader
es una parte de Kingfisher, así que no olvides import Kingfisher
.
Necesito obtener un UIImage solo en lugar de cargar un UIImageView normal con la biblioteca de Kingfisher
Para darme cuenta, implementé una solución alternativa con UIImageView:
let imageView = UIImageView()
imageView.kf_setImageWithURL(NSURL(string: cpa.imageName)!, placeholderImage: nil,
optionsInfo: [.Transition(ImageTransition.Fade(1))],
progressBlock: { receivedSize, totalSize in
print("/(receivedSize)//(totalSize)")
},
completionHandler: { image, error, cacheType, imageURL in
anView!.image = image //anView IS NOT an UIImageView
anView!.frame.size = CGSize(width: 15.0, height: 15.0)
print("Finished")
})
Este código funciona perfectamente, pero me gustaría hacerlo de una manera más limpia. ¿Hay algún método en esta biblioteca para obtener solo un UIImage? Async y caché
En Kingfisher 5
imageView.kf.setImage(with: url) { result in
switch result {
case .success(let value):
print("Image: /(value.image). Got from: /
(value.cacheType)")
case .failure(let error):
print("Error: /(error)")
}
}
ver más: https://github.com/onevcat/Kingfisher/wiki/Kingfisher-5.0-Migration-Guide
Otra forma en Kingfisher 5:
KingfisherManager.shared.retrieveImage(with: url) { result in
let image = try? result.get().image
if let image = image {
...
}
}
Puede usar el método retrieveImage(with:options:progressBlock: completionHandler:)
del KingfisherManager
para esto.
Tal vez algo como esto:
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil, completionHandler: { image, error, cacheType, imageURL in
print(image)
})
Esta es la última sintaxis para descargar imágenes en kingFisher (Probado en swift 4.2)
KingfisherManager.shared.retrieveImage(with: resource, options: nil, progressBlock: nil) { result in
switch result {
case .success(let value):
print("Image: /(value.image). Got from: /(value.cacheType)")
case .failure(let error):
print("Error: /(error)")
}
}