// Create a PHPickerConfiguration
var configuration = PHPickerConfiguration(photoLibrary: .shared())
configuration.selectionLimit = 4 // Set the selection limit to 4 images
configuration.filter = .images // Set the filter to images only
// Create a PHPickerViewController with the configuration
let picker = PHPickerViewController(configuration: configuration)
picker.delegate = self // Set the delegate to self
// Add the picker as a child view controller
addChild(picker)
// Set the frame of the picker, or use Auto Layout constraints
picker.view.frame = view.bounds
// Add the picker’s view as a subview
view.addSubview(picker.view)
// Notify the picker that it has been added
picker.didMove(toParent: self)
1条答案
按热度按时间fkaflof61#
根据latest WWDC for the PhotoPicker,你可以read the transcript here,iOS 17即将推出自定义和嵌入内联照片选择器的功能。不幸的是,对我和我的问题来说,这要到2023年9月才能公开。所以现在,你可以这样做,将选择器直接嵌入到视图控制器中:
字符串
然而,这在iMessage扩展中看起来仍然很糟糕,因为你不能关闭额外的UI,所以它在半张表中非常拥挤。
另一种选择是要求相机滚动权限并制作自己的选择器。这里的缺点是,如果用户不允许权限,或者选择了某些照片,你就不走运了,而且很难让他们找到在哪里重新打开权限。此外,您现在还需要进行所有的图像管理。下面是我写的一个片段,用于从相机胶卷中获取前20张图像:
型
最后,我想到的解决方案是削减范围,只需一个按钮将iMessage扩展到整个工作表,然后用户可以使用系统选择器全屏选择图像。这是一个令人沮丧的,但我可以重新审视这个答案一旦iOS 17下降。