【问题标题】:imageview not updating after an image is picked选择图像后图像视图不更新
【发布时间】:2017-02-08 17:04:46
【问题描述】:

我有以下问题。我使用 imagepickerdelegate 从我的照片库中选择图像并将其应用到 UIImageView 中。问题是它不会用我选择的图像更新 UIImageview。

我都继承了

UIImagePickerControllerDelegate、UINavigationControllerDelegate

这是我的图像视图。

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 时,我的日志会显示以下消息:

[通用] 创建未知类型的图像格式是错误的

当我选择一张图片时,它会确认有一张图片但它不会显示。

设置图片

知道我做错了什么吗?

【问题讨论】:

    标签: ios swift uiimageview swift3


    【解决方案1】:

    我检查了您的代码,您似乎没有在屏幕上显示 profileImageView 的代码。所以,你看不到它。示例:

    profileImageView.frame = ........
    self.view.addSubview(profileImageView)
    

    【讨论】:

    • 哦,对不起,我把那部分遗漏了,因为它也有很多约束的东西,但我确实包括了它。我什至看到了 imageview,我可以点击它来显示我的 uiimagepickercontroller。我可以完成整个挑选和图像的过程,它甚至可以在代码中返回图像,但它不会显示。
    • 也许,问题出在这里: DispatchQueue.global(qos: .userInitiated).async {} 让我们尝试删除它。
    • 我试过了,还是不能解决问题。我插入它以确保图像更改发生在主队列上
    猜你喜欢
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2013-07-11
    • 1970-01-01
    • 2013-11-08
    相关资源
    最近更新 更多