iPhoneXでナビゲーションバーとステータスバーの表示/非表示を別々に制御する方法
一つのiOSアプリケーションでNavigationBar
とStatusBar
の表示/非表示を画面によって制御したいと思っています.
iPhone6, iPhone7 and iPhone8では,意図通りに表示できています.
最初の画面ではステータスバーもナビゲーションバーも表示されず,
次の画面ではステータスバーは非表示のままで,ナビゲーションバーは表示されます.
しかしiPhoneXでは,NavigationBar
を表示するとStatusBar
も一緒に表示されてしまいます.
ViewController
でのprefersStatusBarHidden
はYESに設定しています.
また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;
}