この問題を解決するための 3 つのオプションを考え出しました。
オプション 1: ナビゲーション バーのサイズを変更する
float currentVersion = 7.0;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
// iOS 7
self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 64);
}
オプション 2: ステータス バーを非表示にする
たとえば、ステータスバーを非表示にするモーダルビューでは
このメソッドを追加
- (BOOL)prefersStatusBarHidden
{
return YES;
}
viewDidLoad に追加
float currentVersion = 7.0;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
ここで、モーダル ビューを閉じると、ステータス バーが元に戻ります。これをviewWillAppearに追加します
float currentVersion = 7.0;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
NSLog(@"ios7");
}
else {
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}
とこれですが、今回は NO を返します
- (BOOL)prefersStatusBarHidden
{
return NO;
}
オプション 3: ナビ コントローラーに埋め込む
モーダル ビューを選択し、ナビゲーション コントローラーに埋め込むだけです。