【iPhone SDK】iOS6以上から使えるステータスバーの色の変更について

iOS6になってから
TwitterやFacebook、Skypeなどのアプリで
電波や時計を表示しているステータスバー領域の背景色が変わっています。

これ、何か設定するのかなっと思い、今更ながら調べてみました。

まず注目したのは
XCodeのTargetプロパティのSummary項目にあるこれ
スクリーンショット 2013-01-18 14.33.48.jpg

StatusBarのスタイルを決め、iOS6SDK版のXCodeからTintingという項目とTint Colorが増えています。
というか元々こんな項目なかったような気がします。

StyleをDefault以外にするとTinting、Tint Color項目が選択不可能になります。

そのため、まずDefaultしかカスタマイズした色を指定できないことがわかります。

iOS5までは、ステータスバーの色として
Default(Glay)、Black、Black半透明の3種しか指定できませんでした。

これは[UIApplication sharedApplication].statusBarStyleプロパティでも指定できました。

とりあえず画像のように指定して起動してみると
スプラッシュ中は確かにこの色に若干の暗色補正がかかった色でステータスバーが表示されました。

しかし、トップメニュー画面が表示されたら元に戻ってしまいました。

うーむ、何かまだ秘密があるのか…と思い調べてみたところ…

こちらがわかりやすくまとめてくれていました。

記事としてはiOS6Beta時代なので
しっかり調査されているようですね。

トップメニュー画面にはすでにUINavigationController管理下のViewControllerの画面だったので
これが影響していたようです。

ナビゲーションコントローラーを作っただけでは
デフォルトカラーでナビゲーションバーが生成されてしまい、
そのため、ステータスバーの色もデフォルトカラーになってしまうようです。

ナビゲーションコントローラー作成後に以下のように色を指定しました。

[self.navigationController.navigationBar setTintColor: [UIColor colorWithRed: 0.09 green: 0.38 blue: 0.35 alpha: 1]];
navigationBarのTintColorを
Summaryで指定した色と同じRGBを指定したところ、
スプラッシュ以降の画面もきちんとステータスバーの色が変わりました。

Summaryの設定は、ナビゲーションバーが存在しない時のみに機能するっという認識でいいっぽいですね。

ナビゲーションバーが存在しててもステータスバーのみ背景色が変更できるような機構は
今後用意されるのでしょうかね…?



この記事へのコメント


この記事へのトラックバック