オープンソースこねこね

Webプログラミングなどについてあれこれ。

iOSでステータスバーの色が写真取得すると黒に戻る件についての対処

ステータスバーの文字の色を

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

で白に変えられる。ところがUIImagePickerControllerで写真アルバムから写真を取得すると、このステータスバーの文字色が黒に戻ってしまう。調べたらstackoverflowが引っかかり、以下のワークアラウンドで回避できることがわかったのでメモ。

まずUIImagePickerControllerのデリゲートを設定し

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;

そして以下のデリゲートメソッドを実装する。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}

UIImagePickerControllerはUINavigationControllerの子クラスなので、UINavigationControllerのデリゲートメソッドであるwillShowViewControllerを実装しておく。ここに色を白にするコードを入れておいてデリゲートにセットしておけばOKというわけです。

以下、stackoverflowの元記事です。

ios7 - UIImagePickerController breaks status bar appearance - Stack Overflow