
iPhone / iPad Universalアプリで、ステータスバーを半透明にしようとしたところ、iPadのみ半透明にできませんでした。
ログをよく見ると、
UIStatusBarStyleBlackTranslucent is not available on this device.
というエラーが。
ドキュメントにはそれらしい記述が見つからなかったのですが、
どうやらiPad端末はUIStatusBarStyleBlackTranslucentに未対応のようです。
ただ、動画や画像などを見せる画面を作る場合、数秒後にステータスバーを隠すため、
その時に画面ぴったりになるよう、ステータスバーの裏側にもコンテンツを表示したいと思い、
とりあえず、viewWillAppear:とviewDidAppear:で次のようなフックを入れて回避しました。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES];
}
}
見た目的には少しいまいちなので、他に良い方法があれば探したいです。