[iOS7]ステータスバーのスタイル

2014/03/07

iOS7のUIが大幅に変更されて、デザインに苦労したりします。 個人的な感想から言えば、iOS6はきって(シェアからしても)、iOS7用で作成した方がいいような気がします。

さてステータスバーもiPhoneのフルスクリーンに重なったり、デフォルトの色が黒だったりと頭が痛いです。

UIApplicationのsetStatusBarStyleで、ステータスバーのスタイルが変更できるみたいな記載がありましたが、Storyboardとかで画面遷移するとどうもその限りではないようです。

アプリケーションにsetStatusBarStyle

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

なぜか、Stoarybordの「Status Bar」を設定しても変更できませんでした。 という事で、

UIViewControllerのpreferredStatusBarStyleを利用

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

どうやらこの方法が確実なようです。 スタイルを統一したい場合は、preferredStatusBarStyleを実装した親クラスを各UIViewControllerに継承しやれば良いかと思います。

ステータスバーの種類

typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
    UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgrounds
    UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
    
    UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
    UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
};