状态栏隐藏/显示会影响视图大小

时间:2015-01-29 08:58:51

标签: ios objective-c statusbar

我想在用户点按按钮时隐藏/显示状态栏。我是这样做的:

// Hide
[[UIApplication sharedApplication] setStatusBarHidden:YES
                                   withAnimation:UIStatusBarAnimationFade];
// Show
[[UIApplication sharedApplication] setStatusBarHidden:NO
                                   withAnimation:UIStatusBarAnimationFade];

这会制动UI布局,因为视图向上移动。我选择了所有Extend Edges选项,但它没有帮助。 enter image description here

我发现布局因视图高度而改变:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    NSLog(@"%@", NSStringFromCGRect(self.navigationController.view.frame));
}

记录:

{{0,0},{320, 568 }} - 状态栏被隐藏时。

{{0,0},{320, 588 }} - 显示时。

问题是如何在显示或隐藏状态栏时阻止视图框更改。

2 个答案:

答案 0 :(得分:1)

这是iOS 8中的一个问题。您可以通过覆盖以下

来恢复旧行为
 -(BOOL)prefersStatusBarHidden {
   return YES;
  }

答案 1 :(得分:0)

我的导航控制器嵌入在另一个视图中,其中一个与顶部布局指南对齐。这就是问题所在。