swift PHPickerViewController隐藏搜索栏和导航栏

8gsdolmq  于 2023-11-16  发布在  Swift
关注(0)|答案(1)|浏览(128)

我一直在尝试在一个新的应用中实现照片选择功能,我目前的方法是使用一个PHPickerViewController嵌入到一个UIViewControllerRepresentable中,以显示在swiftUI视图中。
这是我的makeUIViewController函数。

func makeUIViewController(context: Context) -> PHPickerViewController {
    var configuration = PHPickerConfiguration()
    configuration.filter = filter
    configuration.selectionLimit = limit
    let controller = PHPickerViewController(configuration: configuration)
    controller.delegate = context.coordinator

    return controller
}

字符串
它位于一个名为PhotoPicker的结构体中:

struct PhotoPicker: UIViewControllerRepresentable {


我想隐藏的是这部分:

是的,所有这些。让我解释一下,PickerView总是呈现的,它不是弹出窗口,所以不需要取消按钮。正如你所看到的,也没有完成按钮。这是因为只有一个图像需要被选择,所以当用户点击图像时,一个新的图像被选中的事件被立即调用。删除用户确认的需要。然后关于搜索栏,我真的不想要它,我只是想让用户选择一张照片,最后在照片和相册之间进行小小的切换,在我的情况下也不是很必要。
我已经尝试了很多不同的方法,包括尝试在makeUIViewController中创建控制器时为控制器设置选项。这些选项例如:

controller.navigationController?.setToolbarHidden(true, animated: false)
controller.navigationController?.setNavigationBarHidden(true, animated: false)


我还尝试在SwiftUI主体中调用视图修饰符:

PhotoPicker(filter: .images, limit: 1) { (results) in
    
}
.navigationBarTitle("")
.navigationBarHidden(true)
.statusBar(hidden: true)
.navigationBarBackButtonHidden(true)


但是,没有一个似乎是工作。所以这就是为什么我问这里,因为它似乎我尝试了一切,没有工作.

k3bvogb1

k3bvogb11#

您不能完全删除选取器的UINavigationBar,但可以使用以下命令删除搜索栏和其他一些元素:

var config = PHPickerConfiguration(photoLibrary: .shared());    
if #available(iOS 17.0, *) {
    config.disabledCapabilities = [.search, .stagingArea, .collectionNavigation, .selectionActions];
}
let imagePicker = PHPickerViewController(configuration: config);

字符串
编辑:也有“. photosPickerVisibility”,但它只在SwiftUI中可用,而不是UIKit. Docs are here.

相关问题