使用Kingfisher在imagePickerController中设置图像

问题描述:

我想使用Kingfisher将图像设置为我的UIImageView,imagePickerController但没有任何反应。首先,我将用户引导至照片库。在用户选择照片并返回后,我得到UIImage的照片和imagePickerControllerURL。翠鸟没有办法设置UIImage。所以我尝试从URL设置它,但我只看到空UIImageView。我的代码是;使用Kingfisher在imagePickerController中设置图像

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    let changedImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    let url = info[UIImagePickerControllerReferenceURL] as! URL 


    profilePhotoImage.kf.setImage(with: url) 

    picker.dismiss(animated: true, completion: nil) 

    } 

我的网址是:"assets-library://asset/asset.JPG?id=D21C7124-472A-44F8-A22B-B3A5A0C48E32&ext=JPG" 0x00000001702f7680"。我的网址有什么问题吗?或者我可以用翠鸟设置UIImage。我确定我可以得到这张照片,因为当我尝试设置changedImage而没有kf时,它可以正常工作。我尝试了 Kingfisher and swift 3 - cannot set image with url但它没有奏效。

是的,你是对的。这真的很奇怪。

尝试在拾取器解除方法完成时设置更改后的图像。也许它会工作:

picker.dismiss(animated: true, completion: nil) 
self.imageView.image = self.changedImage 
} 
+0

这是作品。 Thnx很多。这是整个互联网对这种情况唯一的答案。 Thnx队友 – AtaerCaner

我还没有尝试从本地URL doenloading,但我敢肯定有一种方法来使用翠鸟下载图像。

使用ImageDownloader下载的图像没有缓存

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

您可以参考这个小抄。

https://github.com/onevcat/Kingfisher/wiki/Cheat-Sheet

+0

呀,必须有一种简单的方法来设置图像与翠鸟一起做这在完成处理程序。我查了一下备忘单,但找不到。这很奇怪。 – AtaerCaner

+0

在哪个上下文中你想使用'Kingfisher'?它是否用于缓存功能? – Kiester

与主线程

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 


    dismiss(animated: true, completion: { 
      DispatchQueue.main.async { 
       self.imgProfile.kf.base.image = image 
      } 
    }) 

}