setStatusBarHidden:在XIB加载覆盖UINavigationBar之后为NO

Old*_*her 10 uinavigationbar xib ios uistatusbar

在视图加载之前setStatusBarHidden:NO设置时,其他元素在StatusBar正下方显示为正确对齐.但是,在视图加载设置时,会部分覆盖.UINavigationBarsetStatusBarHidden:NOUINavigationBar

加载所述视图后必须显示StatusBar,但如何在不遇到上述问题的情况下完成此操作?

Ode*_*Dov 16

我在我的代码中找到了一个黑客,虽然不记得或找不到它的来源.诀窍是通过隐藏和重新显示它来刷新导航栏:

[self.navigationController setNavigationBarHidden:YES animated:NO];
[self.navigationController setNavigationBarHidden:NO animated:NO];
Run Code Online (Sandbox Code Playgroud)

在我的代码中,函数看起来像这样:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

然而,被警告,这是一个黑客,和我目前正在与出现从这个代码发起了一些错误挣扎(导航项目不匹配导航内容).但是因为它在某些地方对我有用,我想我会提到它.

编辑: 我想我在这里找到了最初的帖子: 当状态栏被隐藏时,如何让UINavigationController中的导航栏更新其位置?

GL,Oded