我希望使用UIImageView
将图片设置为imagePickerController
中的Kingfisher
,但没有任何反应。首先,我将用户引导至照片库。在用户选择照片并返回后,我会将照片显示为UIImage
,将URL
设为imagePickerController
。翠鸟没有设置UIImage
的方法。所以我尝试从URL设置它,但我只看到空UIImageView
。我的代码是;
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但它没有用。
答案 0 :(得分:3)
在完成处理程序和主线程
上执行此操作 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
dismiss(animated: true, completion: {
DispatchQueue.main.async {
self.imgProfile.kf.base.image = image
}
})
}
答案 1 :(得分:2)
尝试在选择器关闭方法完成时设置已更改的图像。也许它会起作用:
picker.dismiss(animated: true, completion: nil)
self.imageView.image = self.changedImage
}
答案 2 :(得分:0)
我没有尝试从本地网址上载,但我确信有一种方法可以使用Kingfisher下载图像。
使用ImageDownloader下载图像而不进行缓存
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
print("Downloaded Image: \(image)")
}
您可以参考此备忘单。
答案 3 :(得分:0)
快速 5 你可以试试这个代码:
让 addURL = "https://..."
if let urlPhotos = URL(string: addURL) {
image.kf.setImage(with: urlPhotos, placeholder: UIImage(systemName: "folder"))
确保您将 @IBOutlet 声明为 UIImageView。