首页 文章

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

提问于
浏览
1

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

// 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 回答

  • 1

    这是iOS 8中的问题 . 您可以通过覆盖以下内容来恢复旧行为

    -(BOOL)prefersStatusBarHidden {
       return YES;
      }
    
  • 0

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

相关问题