使用 Kingfisher 在 imagePickerController 中设置图像
Set Image in imagePickerController with using Kingfisher
我想使用 Kingfisher
在 imagePickerController
中为我的 UIImageView
设置图像,但没有任何反应。首先,我将用户引导至照片库。用户选择照片并返回后,我得到的照片为 UIImage
和 URL
in imagePickerController
。 Kingfisher 没有设置 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)
}
我的 url 是 "assets-library://asset/asset.JPG?id=D21C7124-472A-44F8-A22B-B3A5A0C48E32&ext=JPG" 0x00000001702f7680"
。我的 URL 有什么问题吗?或者我可以用 kingfisher 设置 UIImage
吗?我确定我可以拍到照片,因为当我尝试设置 changedImage
而不设置 kf
时,它会起作用。我试过
但是没用。
我还没有尝试从本地下载 URL,但我确信有一种方法可以使用 Kingfisher 下载图像。
使用 ImageDownloader 下载图像而不缓存
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
print("Downloaded Image: \(image)")
}
你可以参考这个秘籍sheet。
是的,你是对的。真是太奇怪了。
尝试在选择器关闭方法完成时设置更改后的图像。也许它会起作用:
picker.dismiss(animated: true, completion: nil)
self.imageView.image = self.changedImage
}
与主线程一起在完成处理程序上执行此操作
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
dismiss(animated: true, completion: {
DispatchQueue.main.async {
self.imgProfile.kf.base.image = image
}
})
}
SWIFT 5
你可以试试这个代码:
让 addURL = "https://..."
if let urlPhotos = URL(string: addURL) {
image.kf.setImage(with: urlPhotos, placeholder: UIImage(systemName: "folder"))
确保你向 UIImageView 声明了@IBOutlet。
我想使用 Kingfisher
在 imagePickerController
中为我的 UIImageView
设置图像,但没有任何反应。首先,我将用户引导至照片库。用户选择照片并返回后,我得到的照片为 UIImage
和 URL
in imagePickerController
。 Kingfisher 没有设置 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)
}
我的 url 是 "assets-library://asset/asset.JPG?id=D21C7124-472A-44F8-A22B-B3A5A0C48E32&ext=JPG" 0x00000001702f7680"
。我的 URL 有什么问题吗?或者我可以用 kingfisher 设置 UIImage
吗?我确定我可以拍到照片,因为当我尝试设置 changedImage
而不设置 kf
时,它会起作用。我试过
我还没有尝试从本地下载 URL,但我确信有一种方法可以使用 Kingfisher 下载图像。
使用 ImageDownloader 下载图像而不缓存
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
print("Downloaded Image: \(image)")
}
你可以参考这个秘籍sheet。
是的,你是对的。真是太奇怪了。
尝试在选择器关闭方法完成时设置更改后的图像。也许它会起作用:
picker.dismiss(animated: true, completion: nil)
self.imageView.image = self.changedImage
}
与主线程一起在完成处理程序上执行此操作
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
dismiss(animated: true, completion: {
DispatchQueue.main.async {
self.imgProfile.kf.base.image = image
}
})
}
SWIFT 5 你可以试试这个代码:
让 addURL = "https://..."
if let urlPhotos = URL(string: addURL) {
image.kf.setImage(with: urlPhotos, placeholder: UIImage(systemName: "folder"))
确保你向 UIImageView 声明了@IBOutlet。