開発メモ

開発関係のメモをいろいろと。たぶん。

iOS7でステータスバーを非表示にする方法

この記事を書いた時の環境はこんな感じ。

環境 情報
iOS 7.0
Xcode 5.1
Date 2014/03/22

下記のそれぞれのパターンを説明します。

  • 起動時からずっと非表示にする場合
  • 特定の画面だけ非表示にする場合
  • プログラムから表示/非表示を切り替える場合

起動時からずっと非表示にする場合

最初から最後まで、ずっとフルスクリーンのアプリを作る場合はこんな感じ。

1. 『Hide during application launch』をチェック

プロジェクト設定の[TARGET] - [General]にある“Deployment Info”で設定します。

f:id:see_ku:20140322181353p:plain

これをチェックしておくと、起動画面でステータスバーが表示されなくなります。

『Hide during application launch』チェックすると、アプリ名-info.plistの中のUIStatusBarHiddenがYESに設定されます。

2. 『View controller-based status bar appearance』をNOにする

プロジェクト設定の[TARGET] - [Info]にある“Custom iOS Target Properties”で設定します。デフォルトだと項目が存在しないので、まず、手動で項目を追加。

f:id:see_ku:20140322181408p:plain

設定を『NO』にしておきます。

f:id:see_ku:20140322181421p:plain

これで、アプリ起動後もステータスバーが表示されなくなります。

『View controller-based status bar appearance』の設定は、アプリ名-info.plistの中のUIViewControllerBasedStatusBarAppearanceに対応します。

特定の画面だけ非表示にする場合

指定した画面だけステータスバーを非表示にする場合はこんな感じ。ViewController単位で指定します。これが一番楽かな。

1. ViewControllerのprefersStatusBarHiddenでYESを返す

ViewControllerにprefersStatusBarHiddenを追加して、YESを返すようにします。

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

これだけ。

プログラムから表示/非表示を切り替える場合

プログラムからステータスバーの表示/非表示を切り替える場合はこんな感じ。

1. 『View controller-based status bar appearance』をNOにする

細かい設定方法は、上の方にある『起動時からずっと非表示にする場合』を参照で。

ステータスバーを非表示で起動する場合、『Hide during application launch』をチェックしておきます。

2. UIApplicationのsetStatusBarHiddenで表示を切り替え

プログラムはこんな感じになります。

ステータスバーを非表示にする。

- (IBAction)hideStatusBar:(id)sender
{
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
}

ステータスバーを表示する。

- (IBAction)showStatusBar:(id)sender
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}

参考資料

iOS 7でステータスバーを非表示にしたりスタイルを変更する方法 - Dolice Lab
http://lab.dolice.net/blog/2013/09/25/objc-ios7-status-bar/

iOS7ステータスバー対策まとめ - Qiita
http://qiita.com/makoto_kw/items/d7ed59aff27fb95c9fde