我想在我的应用程序中单独控制显示和隐藏NavigationBar
和StatusBar
或每个屏幕。
在 iPhone6 , iPhone7 和 iPhone8 上,没关系。
但在 iPhoneX 上,当显示NavigationBar
时,即使StatusBar
设置为YES,prefersStatusBarHidden
也会一起显示。
NavigationBar
的高度高于StatusBar
如果你能告诉我一个好的解决方案,我会很感激。
谢谢。
我的代码如下,
FirstViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = UIColor.yellowColor;
self.navigationController.navigationBarHidden = YES;
} }
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
}
- (void)touchUpButton:(UIButton *)button
{
SecondViewController *vc = [[SecondViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBarHidden = NO;
self.navigationItem.title = @"SecondView";
self.view.backgroundColor = UIColor.cyanColor;
}
- (void)viewWillAppear:(BOOL)animated
{
self.navigationController.navigationBarHidden = NO;
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
答案 0 :(得分:2)
这是iPhone X上的预期行为,您无法阻止它。在其他iPhone上显示导航栏并且导航栏没有状态栏时,导航栏会向上移动到屏幕顶部。但是在iPhone X上它无法做到这一点,因为“缺口”会切入它,你将失去部分标题。因此,在显示导航栏时,始终会显示状态栏。
这就是为什么在HIG for iPhone X中它说:
如果您的应用当前隐藏了状态栏,请重新考虑该决定 适用于iPhone X 。 iPhone上的显示高度提供更多垂直 内容空间比4.7“iPhone的显示和状态 栏占据屏幕的一个区域,你的应用可能不会完全 利用。状态栏还显示人们认为有用的信息。 只应隐藏它以换取附加值。
如果您在iPhone X上将显示屏的顶部和底部设为黑色(特别是隐藏它的圆角和“缺口”),那么这是一个额外的信息,那么这是让Apple拒绝您的应用的快速方法。再次在HIG for iPhone X中它说:
请勿掩盖或特别注意按键显示功能。请勿 试图隐藏设备的圆角,传感器外壳或 通过在黑色条上放置黑条访问主屏幕的指示器 屏幕的顶部和底部。不要使用像这样的视觉装饰 括号,边框,形状或说明特殊的说明文字 关注这些领域。
虽然大多数这些只是指导方针Apple非常热衷于此,并且几乎总是拒绝应用程序,因为它。