2016-02-04 23 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比其他更簡單的方法 –