Tech Racho エンジニアの「?」を「!」に。
  • 開発

iPadでは、ステータスバーは半透明にできない


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];
    }
}

見た目的には少しいまいちなので、他に良い方法があれば探したいです。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。