iOS – UINavigationController,隐藏navigationBar

我在为UINavigationController隐藏navigationBar时遇到了一些小麻烦

我已经添加了:

self.navigation!.navigationBar.hidden = true 

不幸的是,这留下了一些背景(白色)留在白色状态栏后面向内推(绿色)向下,以及一个不需要的滚动行为,我可以上下拖动内容来显示/隐藏白色背景。 我需要的是状态栏不占用任何垂直空间而是放在内容之上(绿色)

我该如何实现这一目标? 快速以及obj-c的答案非常受欢迎

在此处输入图像描述 编辑:我已尝试过以下各种版本,问题仍然存在 – .-

 override func loadView() { self.view = UIView(frame:UIScreen.mainScreen().bounds) self.view.backgroundColor = UIColor.whiteColor() self.navigation = UINavigationController(rootViewController: self.guideViewController!) self.navigation!.navigationBarHidden = true self.navigation!.setNavigationBarHidden(true, animated: true) self.view.addSubview(self.navigation!.view) } override func viewDidLoad() { self.automaticallyAdjustsScrollViewInsets = false self.navigation!.automaticallyAdjustsScrollViewInsets = false } 

编辑2:

打印:

 UIApplication.sharedApplication().statusBarFrame.size.height 

在viewDidLoad返回20之后

更新 :

只需在ViewDidLoad方法中添加它ViewDidLoad

 self.automaticallyAdjustsScrollViewInsets = NO; 

您可以使用隐藏导航栏

 [self.navigationController setNavigationBarHidden:YES]; 

隐藏状态栏

 // Hide status bar iOS 7 or later - (BOOL)prefersStatusBarHidden { return YES; } 

看看这个网站: https : //developer.xamarin.com/recipes/ios/content_controls/navigation_controller/make_the_nav_bar_disappear/

这个网站说“根据导航栏是不透明还是半透明,行为略有不同”

我希望它有所帮助。

 [self.navigationController setNavigationBarHidden:YES animated:animated]; 

我知道这个问题已经得到解答但是我在隐藏导航栏然后在视图中使用UIScrollView时遇到了同样的问题。

我使用以下方式以编程方式修复

 self.edgesForExtendedLayout = UIRectEdgeNone; 

或者在界面构建器中通过取消选择所有这些: 在此处输入图像描述