首页 文章

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

提问于
浏览
0

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

我面临的问题是我无法隐藏内部导航栏(带有“Chwile” Headers 和“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);
    }

2 回答

  • 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);
    

    它会工作正常

  • 1
    -(BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    

相关问题