我想在用户点按按钮时隐藏/显示状态栏。我是这样做的:
// Hide
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
// Show
[[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationFade];
这会制动UI布局,因为视图向上移动。我选择了所有Extend Edges选项,但它没有帮助。
我发现布局因视图高度而改变:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
NSLog(@"%@", NSStringFromCGRect(self.navigationController.view.frame));
}
记录:
{{0,0},{320, 568 }} - 状态栏被隐藏时。
{{0,0},{320, 588 }} - 显示时。
问题是如何在显示或隐藏状态栏时阻止视图框更改。
答案 0 :(得分:1)
这是iOS 8中的一个问题。您可以通过覆盖以下
来恢复旧行为 -(BOOL)prefersStatusBarHidden {
return YES;
}
答案 1 :(得分:0)
我的导航控制器嵌入在另一个视图中,其中一个与顶部布局指南对齐。这就是问题所在。