首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHPickerViewController替换UIImagePickerController

用PHPickerViewController替换UIImagePickerController
EN

Stack Overflow用户
提问于 2021-09-07 01:41:56
回答 1查看 284关注 0票数 0

我正在用iOS 14的PHPickerViewController替换UIImagePickerController,但我在使用PHPickerViewController在UI中显示所选照片时遇到了问题。当我从照片库中选择一张照片时,PHPickerViewController会自行关闭,而不会在UI中更新照片。我从不同的教程中尝试了不同的解决方案,但每次都得到相同的结果。

下面是我目前拥有的代码。DispatchQueue.main.async括号中的代码是我在UIImagePickerController中用来在UI中显示照片的代码。

代码语言:javascript
复制
extension EditProfileController: PHPickerViewControllerDelegate {
    @available(iOS 14, *)

    func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        picker.dismiss(animated: true, completion: nil)

        for result in results {
            result.itemProvider.loadObject(ofClass: UIImage.self) { object, error in
                if let image = object as? UIImage {
                    DispatchQueue.main.async {
                        self.profileImageView.image = image
                        self.imageChanged = true
                    }
                }
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-07 03:05:46

你的代码没有太大的问题。我会这样写它,但它几乎是一样的:

代码语言:javascript
复制
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    picker.dismiss(animated: true) {
        guard let result = results.first else { 
            print("no results")
            return 
        }
        let prov = result.itemProvider
        guard prov.canLoadObject(ofClass: UIImage.self) else { 
            print("no image")
            return
        }
        prov.loadObject(ofClass: UIImage.self) { object, error in
            if let image = object as? UIImage {
                DispatchQueue.main.async {
                    self.profileImageView.image = image
                    self.imageChanged = true
                }
            } else {
                print(error as Any)
            }
        }
    }
}

像这样试一试,就像实验一样,因为我们知道它通常是有效的。使用断点和控制台消息来确保执行的路径是您期望的位置。如果是这样,但图像的显示仍然不起作用,我不得不认为问题出在其他地方,就是你没有向我们展示的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69081574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档