我正在用iOS 14的PHPickerViewController替换UIImagePickerController,但我在使用PHPickerViewController在UI中显示所选照片时遇到了问题。当我从照片库中选择一张照片时,PHPickerViewController会自行关闭,而不会在UI中更新照片。我从不同的教程中尝试了不同的解决方案,但每次都得到相同的结果。
下面是我目前拥有的代码。DispatchQueue.main.async括号中的代码是我在UIImagePickerController中用来在UI中显示照片的代码。
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
}
}
}
}
}
}发布于 2021-09-07 03:05:46
你的代码没有太大的问题。我会这样写它,但它几乎是一样的:
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)
}
}
}
}像这样试一试,就像实验一样,因为我们知道它通常是有效的。使用断点和控制台消息来确保执行的路径是您期望的位置。如果是这样,但图像的显示仍然不起作用,我不得不认为问题出在其他地方,就是你没有向我们展示的代码。
https://stackoverflow.com/questions/69081574
复制相似问题