2017-08-03 73 views
2

我想使用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但它沒有奏效。

回答

2

是的,你是對的。這真的很奇怪。

嘗試在拾取器解除方法完成時設置更改後的圖像。也許它會工作:

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

這是作品。 Thnx很多。這是整個互聯網對這種情況唯一的答案。 Thnx隊友 – AtaerCaner

0

我還沒有嘗試從本地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

1

與主線程

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


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

}