iOS7の特定のViewControllerで、特定条件時にステータスバーを非表示にする方法です。
info.plistの設定
info.plist に ”View controller-based status bar appearance” という項目を追加し、値を ”YES” に。これでViewControllerごとにステータスバーの表示を制御可能になる。
ViewController.m
ステータスバーの表示を制御したいViewControllerにて、”statusbarHidden” のようなステータスバーの表示/非表示のフラグ用のプロパティを用意しておく。
ViewController.m
@interface ViewController ()
@property BOOL statusbarHidden;
@end
さらに ”prefersStatusBarHidden" というメソッドを実装し、戻り値を "_statusbarHidden" とする。
ViewController.m
- (BOOL)prefersStatusBarHidden {
return _statusbarHidden;
}
あとは状況に応じて、"_statusbarHidden" に "YES" か "NO" をセットし、ステータスバーの画面更新メソッド "setNeedsStatusBarAppearanceUpdate" を呼べばOK。以下はiPhoneを横向きにした場合にステータスバーを非表示にする例。
ViewController.m
- (void)viewWillLayoutSubviews {
UIInterfaceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;
switch (interfaceOrientation) {
case UIInterfaceOrientationPortrait:
_statusbarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];
break;
case UIInterfaceOrientationLandscapeLeft:
case UIInterfaceOrientationLandscapeRight:
_statusbarHidden = YES;
[self setNeedsStatusBarAppearanceUpdate];
break;
default:
break;
}
}