XCode5でステータスバー(statusbar)が予期せず真っ黒になったときの対処法

症状(ステータスバーが消えた!)

presentViewControllerでviewの切り替えをすると、なんか知らんが時計や電波表示が真っ黒。ステータスバーが消えてしまった。

本当の症状(ステータスバーの背景色が黒なのに文字色が黒に)

実機転送してみるとバッテリーの表示は見える。それに、view切り替えのときにちらちらと真っ黒な時計表示が見える。これは、ステータスバーの文字色が黒くなってしまっている。

原因

ステータスバーの背景色が、起動時:白->黒になるため、iOS側が気を利かせて設定している文字色を基本黒に設定しているような挙動に感じる(根拠なし)

対処法

info.plistに「View controller-based status bar appearance」を追加。値を「NO」に

これでControllerからステータスバーの表示を制御出来るようになる。

viewDidLoadあたりに、以下のコードを追加


[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
ステータスバーの文字色を白に変更。
手元の場合は、アプリ起動中は常に背景黒(起動時のみ白)なので、文字色を白に固定することで対応とした。ステータスバー下の色が頻繁に変わる場合は、適宜文字色を指定した方がよさそうだ。