company cache ios swift2 uiimage kingfisher

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é



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)") } }