Ios imageview在拾取图像后不更新
我有以下问题。我使用imagepickerdelegate从照片库中选择一个图像,并将其应用到UIImageView中。问题是它不会用我选择的图像更新UIImageview 我都继承了 UIImagePickerControllerDelegate,UINavigationControllerDelegate 这是我的图像视图Ios imageview在拾取图像后不更新,ios,swift,uiimageview,swift3,Ios,Swift,Uiimageview,Swift3,我有以下问题。我使用imagepickerdelegate从照片库中选择一个图像,并将其应用到UIImageView中。问题是它不会用我选择的图像更新UIImageview 我都继承了 UIImagePickerControllerDelegate,UINavigationControllerDelegate 这是我的图像视图 let profileImageView: UIImageView = { let imageView = UIImageView() imageVie
let profileImageView: UIImageView = {
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.layer.cornerRadius = 99 / 2
imageView.layer.masksToBounds = true
imageView.image = UIImage(named: "profileimg")
imageView.contentMode = .scaleToFill
return imageView
}()
然后,在UIImageView中处理选择和设置图像的函数如下所示
func addProfilePhoto() {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.allowsEditing = true
imagePicker.sourceType = .photoLibrary
imagePicker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
present(imagePicker, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
var selectedImageFromPicker: UIImage?
if let editedPickedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
selectedImageFromPicker = editedPickedImage
} else if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
selectedImageFromPicker = pickedImage
}
if let selectedImage = selectedImageFromPicker {
print("set image")
DispatchQueue.global(qos: .userInitiated).async {
DispatchQueue.main.async {
self.profileImageView.image = selectedImage
self.dismiss(animated: true, completion: nil)
}
}
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
当我点击UIImageView时,我的日志会显示以下消息:
[通用]创建类型未知的图像格式时出错
当我选择一个图像时,它确认有一个图像,但它不会显示
设置图像
知道我做错了什么吗?我检查了您的代码,似乎您没有在屏幕上显示profileImageView的代码。所以,你看不到它。例如:
profileImageView.frame = ........
self.view.addSubview(profileImageView)
哦,很抱歉我遗漏了那个部分,因为它也有很多约束的东西,但我确实包含了它。我甚至可以看到imageview,我可以点击它来显示我的uiimagepickercontroller。我可以遍历整个拾取和映像过程,它甚至在代码中返回映像,但它就是不显示。也许,问题就在这里:DispatchQueue.global(qos:.userInitiated)。async{}让我们尝试删除它。我已经尝试过了,它无法解决问题。我插入它是为了确保图像更改发生在主队列上