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
相关产品推荐
相关产品推荐

