如何在嵌入式 UIImagePickerController 中隐藏导航栏
Posted
技术标签:
【中文标题】如何在嵌入式 UIImagePickerController 中隐藏导航栏【英文标题】:How to hide Navigation Bar in embedded UIImagePickerController 【发布时间】:2018-12-10 08:30:17 【问题描述】:我正在尝试将 UIImagePickerController 呈现为普通 UIViewController 中的子视图。
我面临的问题是我无法隐藏内部导航栏(带有“Chwile”标题和“Anuluj”按钮)。它看起来像这样:
我尝试使用我的自定义控制器继承 UIImagePickerController。我还尝试设置 NavigationBar 属性的样式并获得以下结果:
但是,我想完全移除导航栏。我尝试在自定义图像选择器控制器的ViewWillAppear
、ViewDidLoad
和ViewDidAppear
中调用SetNavigationBarHidden(true, true);
和NavigationController.SetNavigationBarHidden(true, true);
,但没有结果。
您知道如何完全删除导航栏吗? swift 或 obj-c 中的解决方案对我来说也很完美。
private void PresentImagePicker(UIImagePickerControllerSourceType type)
imagePicker = new CustomImagePickerController
SourceType = type,
AllowsEditing = false,
;
imagePicker.FinishedPickingMedia += OnImagePickerFinishedPickingMedia;
imagePicker.Canceled += OnImagePickerCancelled;
AddChildViewController(imagePicker);
ContentView.AddSubview(imagePicker.View);
imagePicker.View.Frame = Content.Bounds;
imagePicker.View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
imagePicker.DidMoveToParentViewController(this);
【问题讨论】:
【参考方案1】:您可以像这样简单地使用presentViewController,而不是向父视图添加子视图和管理框架:
self.present(imagePicker, animated: true, completion: nil)
因此,您需要删除以下这些行并用上面的一行替换它们:
AddChildViewController(imagePicker);
ContentView.AddSubview(imagePicker.View);
imagePicker.View.Frame = Content.Bounds;
imagePicker.View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
imagePicker.DidMoveToParentViewController(this);
它会正常工作
【讨论】:
但它没有在选择器上显示任何导航控制器以上是关于如何在嵌入式 UIImagePickerController 中隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章