You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iPad端使用Image Picker Controller选取视频时导航栏透明问题求助

解决iPad上UIImagePickerController选取视频时导航栏透明的问题

这个问题我之前适配iPad的时候也踩过坑!原因很明确:iPad上的UIImagePickerController默认是以popover(弹窗)形式展示的,不像iPhone那样全屏覆盖,所以背后原页面的导航栏会透出来,看起来像是透明状态。

给你两个靠谱的解决方案,按需选择:

方案1:强制Picker全屏显示(最直接)

直接修改Picker的模态展示样式为全屏,这样不管是iPhone还是iPad,Picker都会完全覆盖屏幕,背后的内容就看不到了。修改你的代码如下:

imagePicker.sourceType = .savedPhotosAlbum
imagePicker.mediaTypes = [kUTTypeMovie as String]
// 关键:添加这行设置全屏展示
imagePicker.modalPresentationStyle = .fullScreen
self.present(self.imagePicker, animated: true, completion: nil)

方案2:保持弹窗样式,临时隐藏当前导航栏

如果你想保留iPad上的popover交互风格,可以在present Picker之前临时隐藏当前页面的导航栏,等Picker关闭后再恢复:

// 先隐藏当前导航栏
self.navigationController?.setNavigationBarHidden(true, animated: true)

imagePicker.sourceType = .savedPhotosAlbum
imagePicker.mediaTypes = [kUTTypeMovie as String]
// iPad上默认是popover样式,这里无需修改
self.present(self.imagePicker, animated: true) { [weak self] in
    // 也可以在Picker的代理方法(取消/选取完成)里恢复导航栏
    self?.navigationController?.setNavigationBarHidden(false, animated: true)
}

至于为什么iPhone上没这个问题?因为iPhone屏幕尺寸小,系统默认给UIImagePickerController设置的是全屏模态样式,自然不会出现背后内容透出的情况。

内容的提问来源于stack exchange,提问作者Pramod More

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:32:06