iOS - UINavigationController, 隐藏navigationBar

10

我有一个小问题,无法隐藏我的UINavigationController的navigationBar。

我已经添加了:

self.navigation!.navigationBar.hidden = true

不幸的是,状态栏留下了一些背景(白色),它将内容(绿色)向下推,并且会出现不必要的滚动行为,使我可以拖动内容上下移动以显示/隐藏白色背景。 我需要的是状态栏不占用任何垂直空间,而是位于内容(绿色)之上。

如何实现这一点?欢迎使用Swift和Obj-C进行回答。

enter image description here 编辑: 我已经尝试过各种版本的以下代码,但问题仍然存在-.-

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时


"!" 在 > self.navigation!.navigationBar.hidden = true 中是什么意思? - iBhavin
1
它的意思是解包一个可选值,当定义变量时未设置时,该变量是可选的,并且在请求时需要进行解包。 - August Bjornberg
你如何设置视图约束? - Vinzzz
修改了我的编辑以显示视图约束。 - August Bjornberg
5个回答

9

更新:

只需在您的ViewDidLoad方法中添加以下内容即可。

self.automaticallyAdjustsScrollViewInsets = NO;

我曾错误地认为问题出现在我的UINavigationController中,经过一番查找,我意识到故障出现在我的一个推送视图中,在视图中添加automaticallyAdjustsScrollViewInsets解决了问题!谢谢iBhavin。 - August Bjornberg

6
您可以像这样隐藏导航栏:
[self.navigationController setNavigationBarHidden:YES];

隐藏状态栏
// Hide status bar iOS 7 or later
- (BOOL)prefersStatusBarHidden
{
    return YES;
}

1

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

0

我知道这个问题已经有人回答过了,但当我隐藏导航栏然后在视图中使用UIScrollView时,我遇到了同样的问题。

我通过编程方式修复了它:

self.edgesForExtendedLayout = UIRectEdgeNone;

或者在界面构建器中取消所有这些选项:

在此输入图像描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接