如何在嵌入式 UIImagePickerController 中隐藏导航栏

Posted

技术标签:

【中文标题】如何在嵌入式 UIImagePickerController 中隐藏导航栏【英文标题】:How to hide Navigation Bar in embedded UIImagePickerController 【发布时间】:2018-12-10 08:30:17 【问题描述】:

我正在尝试将 UIImagePickerController 呈现为普通 UIViewController 中的子视图。

我面临的问题是我无法隐藏内部导航栏(带有“Chwile”标题和“Anuluj”按钮)。它看起来像这样:

我尝试使用我的自定义控制器继承 UIImagePickerController。我还尝试设置 NavigationBar 属性的样式并获得以下结果:

但是,我想完全移除导航栏。我尝试在自定义图像选择器控制器的ViewWillAppearViewDidLoadViewDidAppear 中调用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 中隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController 和 UINavigationController

如何将图片从图片库保存到应用程序的文档文件夹中

iOS拍照之系统拍照

如何在裸机下设计一个嵌入式系统架构?

如何在嵌入式数组mongodb中查询嵌入式文档

如何在嵌入式tomcat中禁用http方法[重复]