2016-02-04 22 views
13

我需要得到一个UIImage而不是只加载一个正常的UIImageView与Kingfisher library获取的UIImage只翠鸟库

要实现这一点,我实现与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") 
    }) 

此代码工作完美,但我想以更清晰的方式来完成。 在这个库中是否有一个方法来获取UIImage?异步和缓存

回答

26

您可以使用KingfisherManagerretrieveImage(with:options:progressBlock: completionHandler:)方法。

也许是这样的:

KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil, completionHandler: { image, error, cacheType, imageURL in 
    print(image) 
}) 
+2

在斯威夫特3〜'KingfisherManager.shared.retrieveImage(有烦人改名为:网址! ,options:nil,progressBlock:nil){(image,error,cacheType,imageURL) - >()in print(image) }' –

+0

这是否也会缓存图片? – DoesData

+1

@DoesData yes yes –

4

有了可以使用的ImageDownloader新雨燕3版本:

ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { 
    (image, error, url, data) in 
    print("Downloaded Image: \(image)") 
} 
+3

这不会利用这个[line]缓存(https://github.com/onevcat/Kingfisher/blob/743e3f2a54408de212d8ec74a5c91747b6a26f7e/Sources/ImageDownloader.swift#L288)'cachePolicy:.reloadIgnoringLocalCacheData'这是使用点Kinfisher比其他更简单的方法 –