web-dev-qa-db-ja.com

ステータスバーは消えません

アプリケーションを作成していますが、ステータスバーを非表示にします。アプリをテストすると、スプラッシュスクリーンが表示されている間、ステータスバーが非表示になりますが、アプリが完全に読み込まれると、ステータスバーが再び表示されます。

Xcode 5とiOS 7を使用していますが、ステータスバーをプログラムで無効にしようとしました

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

info.plistファイルで、.xibファイルの属性インスペクターを使用します。何も機能していないようです。

何か案は?

111
user2397282

次のメソッドをアプリのルートビューコントローラーに追加してみてください。

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
220
Quentin

この値をplistに追加する必要があります: "コントローラーベースのステータスバーの外観を表示"および "NO"に設定します。

これにより、ステータスバーを非表示モードに設定できます。これにより、他の提供された回答とは異なり、グローバルに設定されます。

PDATE:スプラッシュ画面でステータスバーを非表示にする場合は、ターゲットのステータスバーオプションで「アプリケーションの起動中に非表示」をマークすることを忘れないでください。また、アプリ内でコードを使用したくない場合は、plistの「ステータスバーは最初は非表示」を「YES」に追加できます。

124
Idan

投稿したコードは、iOS 6.1以下で動作します。 iOS 7の場合、Appleは、各メソッドのステータスバーを直接制御するための新しいメソッドを利用可能にしました。 Info.plistでこのオプションをオフにすると、少なくとも現在の開発者プレビュー(4)でステータスバーを非表示にできます。

Add this and set to NO

参考のために、Appleの開発者ポータルで入手可能なiOS 7移行ガイドをご覧ください。

73
Sven

私はすべてのアプリと「app」-info.plistでステータスバーを非表示にして、「情報プロパティリスト」辞書に2行追加しますステータスバーは最初は非表示」「YESに設定し、私にとってはn_nが動作します」

plist info

36

ただし、UIImagePickerを使用すると、ステータスバーが再び表示されます。

その場合、以下のようにステータスバーを非表示にする必要があります。

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
17
alones

しばらく検索した後、UIImagePickerController問題も処理する非常に簡単な解決策を見つけました。

他の回答で述べたように、AppDelegate didFinishLaunchingでステータスバーを非表示に設定し、「コントローラーベースのステータスバーの表示を表示」をNOに設定します。

次に、AppDelegateで:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila-UIImagePickerControllerが最前面であっても、ステータスバーは非表示のままになります。

UIImagePickerControllerはアプリ全体で非表示のままであるため、UIImagePickerControllerを表示するたびに「再表示」するよりも優れています。

8
ikuramedia

特定のUIViewControllerのステータスバーを非表示にするには、次を追加します。

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

お役に立てれば !

7
Mike Gledhill

プロジェクトの概要から非表示にすることができます。起動時にチェックボックスが非表示になります。

スナップショットを見る

enter image description here

5

私はこの解決策を見つけました。それは魅力のように機能します。 UIImagePickerControllerを使用したいViewControllerでこのコードを記述します。

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }
4
xevser

迅速なソリューション

これをView Controllerに追加するだけです:

override func prefersStatusBarHidden() -> Bool {
    return true
}
3
Dan Beaulieu

上記の単独の回答に加えて、必ずimagePickerControllerDidCancelメソッドを実装し、そこにも同じコードを追加してください。

3
Swindler

UIImagePickerにも問題がありました。 Alonesの回答と同様に、私の解決策は次のとおりでした。この行またはコードを追加しました:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

この関数に:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

これはiOS 6以前ではテストしていませんが、iOS 7では問題なく動作します。

2
Dev01

私の問題は、View Controllerの封じ込めを使用していたことです。たとえば、Navigation Controllerに組み込まれている最上位のView Controllerのみが、ステータスバーを非表示または表示できます。

0
testing

私はXcode 6を使用していますが、このソリューションはiOS 7と8で動作します:

最初に、plistファイルで「View controller-based status bar Appearance」をNOに設定します。

次に、AppDelegateで次を追加します。

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
0
RRN