状态栏 hide/show 影响视图大小
Status Bar hide/show affects view size
我想在用户点击按钮时 hide/show 状态栏。这是我的做法:
// 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;
}
我的导航控制器嵌入到另一个视图中,该视图与顶部布局指南对齐。这就是问题所在。
我想在用户点击按钮时 hide/show 状态栏。这是我的做法:
// 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;
}
我的导航控制器嵌入到另一个视图中,该视图与顶部布局指南对齐。这就是问题所在。