画面上部に表示されるステータスバーについて、表示/非表示の切り替えや表示スタイルの変更方法を解説します。
プロジェクトのInfo.plistにUIStatusBarHiddenキーを追加してYESを設定すると、ステータスバーが非表示になります。スプラッシュ画面でもステータスバーが非表示になるので、常にステータスバーを非表示にする場合におすすめです。
なお、XCodeでInfo.plistにUIStatusBarHiddenキーを追加すると、自動的に「Status bar is initially hidden」というキー名称に変更されます。
UIApplicationクラスの関数やプロパティを利用して、ステータスバーの表示/非表示をプログラムから動的に切り替えることができます。
UIApplicationクラスのstatusBarHiddenプロパティにYESを設定するとステータスバーが非表示になります。NOを設定するとステータスバーが表示されます。statusBarHiddenプロパティへの変更は即座に画面に反映され、切り替えアニメーションは発生しません。なお、現在のステータスバーの表示状態はisStatusBarHiddenプロパティで取得できます。
if( [ UIApplication sharedApplication ].isStatusBarHidden == NO ) {
[ UIApplication sharedApplication ].statusBarHidden = YES;
}
statusBarHidden(isStatusBarHidden)プロパティの公式リファレンス
UIApplicationクラスのsetStatusBarHidden:withAnimation:関数を利用すると、ステータスバーの表示/非表示をアニメーション付きで切り替えることができます。withAnimation引数にはアニメーションの種類をUIStatusBarAnimation列挙子で指定します。
UIStatusBarAnimationNone | 切り替えアニメーションなし |
UIStatusBarAnimationFade | フェードイン/フェードアウトで切り替え |
UIStatusBarAnimationSlide | 上下方向のスライドアニメーションで切り替え |
[ [ UIApplication sharedApplication ] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade ];
setStatusBarHidden:withAnimation:関数の公式リファレンス
UIStatusBarAnimation列挙子の公式リファレンス
なお、ステータスバーの表示/非表示を切り替えるsetStatusBarHidden:animated:関数はiOS3.2から非推奨となりました。この関数を利用すると、コンパイルで警告が発生します。
コンパイルでの非推奨メッセージ例:warning: 'setStatusBarHidden:animated:' is deprecated (declared at ・・・
iOS3.2以降ではsetStatusBarHidden:animated:関数の代わりとしてsetStatusBarHidden:withAnimation:関数を利用します。animated引数がYESの場合はwithAnimation引数にUIStatusBarAnimationFadeを、animated引数がNOの場合はwithAnimation引数にUIStatusBarAnimationNoneを指定すると同等の動作となります。
didFinishLaunchingWithOptionsデリゲートなどのプログラム初期化処理でステータスバーを非表示にしても、アプリ起動直後のスプラッシュ画面ではステータスバーが表示されてしまいます。これは、スプラッシュ画面が表示される段階ではプログラム初期化処理がまだ実行されていないためです。スプラッシュ画面でステータスバーを非表示にするには、Info.plistのUIStatusBarHiddenキーにNOに設定します(「初期状態でステータスバーを非表示にする」を参照)。
UIApplicationクラスのプロパティや関数を利用して、ステータスバーの外見を変更できます。また、プロジェクトのInfo.plistを利用して、アプリケーション起動時のステータスバーの表示スタイルを指定できます。
ステータスバーの表示スタイルは以下の3種類です。
iPadでは黒のステータスバーのみ利用できます。グレーや黒の半透明はiPadでは利用できません。
プロジェクトのInfo.plistにUIStatusBarStyleキーを追加して、ステータスバーの表示スタイルを指定できます。UIStatusBarStyleキーには以下の値を指定します。
Gray style (default) | グレー(デフォルト) |
Transparent black style (alpha of 0.5) | 黒の半透明 |
Opaque black style | 黒 |
なお、XCodeでInfo.plistにUIStatusBarStyleキーを追加すると、自動的に「Status bar style」というキー名称に変更されます。
UIApplicationクラスのstatusBarStyleプロパティを利用して、ステータスバーの表示スタイルをプログラムから動的に変更できます。statusBarStyleプロパティには以下のUIStatusBarStyle列挙子を指定します。
UIStatusBarStyleDefault | グレー(デフォルト) |
UIStatusBarStyleBlackTranslucent | 黒の半透明 |
UIStatusBarStyleBlackOpaque | 黒 |
[ UIApplication sharedApplication ].statusBarStyle = UIStatusBarStyleBlackTranslucent;
UIApplicationクラスのsetStatusBarStyle:animated:関数を利用して、アニメーション付きでステータスバーの表示スタイルを変更できます。第1引数にはUIStatusBarStyle列挙子の値を、第2引数animatedにはアニメーションの有無をYES/NOで指定します。なお、切り替えアニメーションはクロスフェード固定で変更できません。
[ [ UIApplication sharedApplication ]
setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES ];
setStatusBarStyle:animated:関数の公式リファレンス
didFinishLaunchingWithOptionsデリゲートなどのプログラム初期化処理でステータスバーの表示スタイルを変更しても、アプリ起動直後のスプラッシュ画面ではデフォルト外見(グレー)のステータスバーが表示されてしまいます。これは、スプラッシュ画面が表示される段階ではプログラム初期化処理がまだ実行されていないためです。スプラッシュ画面でのステータスバーの表示スタイルを変更するには、トInfo.plistにUIStatusBarStyleキーを追加する方法でステータスバー外見を指定します(「プロジェクトのInfo.plistを利用する」を参照)。
UIViewControllerがViewを配置するとき、通常はステータスバーの領域を除外してViewを配置します。そのため、ステータスバーの表示スタイルに「黒の半透明」を指定しても、ステータスバーとViewが重ならないため半透明の効果が発揮されません。半透明の効果を発揮するには、ステータスバーとViewを重ねる必要があります。これはUIViewControllerのwantsFullScreenLayoutプロパティを利用すると簡単に実現できます。wantsFullScreenLayoutプロパティにYESを設定すると、UIViewControllerのルートViewが画面いっぱいに展開され、ステータスバーとViewが重なるように配置されます。
// UIViewController
- ( void )loadView
{
[ super loadView ];
self.wantsFullScreenLayout = YES;
// 以下、初期化処理