如何让导航栏再次隐藏?

Posted

技术标签:

【中文标题】如何让导航栏再次隐藏?【英文标题】:How to make navgationBar hidden again? 【发布时间】:2017-07-25 08:36:15 【问题描述】:

我正在开发一个应用程序,在搜索了很多解决方案后遇到了一些困难,但仍然无法正常工作。

首先,我创建一个这样的应用程序

我使用以下代码将navgationBar隐藏在viewWillAppear:方法中

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];

但是我用UIImagePickerController拍照后,屏幕上会出现navgationBar

像这样:

那么,我怎样才能让导航栏始终隐藏呢?非常感谢..

===============更新=============

我还使用 UIImagePickerController 从库中选择照片,虽然效果很好。在我选择并返回到这个 viewController 之后,该栏仍然隐藏。真的很奇怪。

【问题讨论】:

为什么你不使用像[[self navigationController] setNavigationBarHidden:YES animated:YES];这样的东西 我用过。但它也不起作用。 @W.LeeLom 您还需要隐藏在图像选取器中的导航栏吗? 【参考方案1】:

如果您想在选择图像后返回 viewController 后隐藏导航栏,请使用这两个回调方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

   //Your code....
   [self.navigationController.navigationBar setHidden:YES];


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

   //Your code....
   [self.navigationController.navigationBar setHidden:YES];

但是,如果您想从 UIImagePickerViewController 中删除导航栏,则应将 UIImagePickerViewController 子类化并在自定义 UIImagePicker 中类似这样

.h

#import <UIKit/UIKit.h>

@interface CustomImagePickerController : UIImagePickerController

@end

.m

#import "CustomImagePickerController.h"

@interface CustomImagePickerController ()

@end

@implementation CustomImagePickerController

- (void)viewDidLoad 
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.navigationController.navigationBar setHidden:YES];


- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


@end

然后使用这个类作为你的UIImagePickerController

希望对你有帮助

【讨论】:

您好,感谢您的解决方案,但它也不起作用。我调试这个发现白色视图是“UIVisualEffectView”,这导致了问题。 调试窗口显示,image.png,希望我能解释一下。【参考方案2】:

如何将您的视图控制器嵌入到界面构建器的导航控制器中。然后创建一个新的导航控制器文件并将界面构建器中的导航控制器分配给这个新类。

在这个类中,只需将栏设置为隐藏,因为您的初始视图控制器将嵌入其中,它应该始终保持隐藏。

【讨论】:

对不起...我使用 Xib + 代码,我不使用情节提要。

以上是关于如何让导航栏再次隐藏?的主要内容,如果未能解决你的问题,请参考以下文章

图像视图在滚动视图中隐藏导航栏

如何在 Xamarin Forms 中滚动时折叠(隐藏或向上滑动)导航栏(标题栏)?

实现侧边伸缩导航栏

使用隐藏的导航栏刷新控件

如何在 C# Web 表单应用程序的回发时保持侧导航栏隐藏?

JavaScript - Bootstrap 4 - 仅在折叠时隐藏导航栏