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

Ios 状态栏隐藏/显示影响视图大小,ios,objective-c,statusbar,Ios,Objective C,Statusbar,我想在用户点击按钮时隐藏/显示状态栏。我是这样做的: // Hide [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; // Show [[UIApplication sharedApplication] setStatusBarHidden:NO

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

// Hide
[[UIApplication sharedApplication] setStatusBarHidden:YES
                                   withAnimation:UIStatusBarAnimationFade];
// Show
[[UIApplication sharedApplication] setStatusBarHidden:NO
                                   withAnimation:UIStatusBarAnimationFade];
这会阻止UI布局,因为视图已上移。我选择了所有“延伸边”选项,但没有帮助。

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

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    NSLog(@"%@", NSStringFromCGRect(self.navigationController.view.frame));
}
它记录:

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

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


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

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

 -(BOOL)prefersStatusBarHidden {
   return YES;
  }

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