web-dev-qa-db-ja.com

iOS7ではステータスバーを隠すことはできません

IPhone 5 iOS 7を4つのベータ版にアップグレードしました。このiPhoneでXcode 5からアプリを実行しても、ステータスバーが非表示になることはありません。

動作していない

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

動作していない

[UIApplication sharedApplication].statusBarHidden = YES;

Apple開発者フォーラムにログインできません

267

アプリのplistファイルに、「View controller-based status bar appearance」という行を追加して、NOに設定します。

アプリでUIImagePickerControllerを使用している場合、これは単に機能しません。

http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ から、mgirouxのソリューション

An example adding View Base Controller to your Info settings in Xcode

556
satgi

View Controllerにメソッドを追加します。

- (BOOL)prefersStatusBarHidden {
    return YES;
}
277
invoodoo

Plistに以下のプロパティを追加します。

- > Status bar is initially hidden = YES

- > View controller-based status bar appearance = NO

両方を追加 - 今すぐステータスバーが消えます。

84
user1179912

シングルビューでステータスバーを非表示にするには、次のようにします。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

最初は、これは私にはうまくいきませんでした。そして、このメソッドのドキュメントで以下のように述べていました。

これはplistファイルで行わなければならず、キーView controller-based status bar appearanceNOに設定します。そしてそれはうまくいった。

53
Debora Fortini

IOS7でステータスバーを隠すには2行のコードが必要です

  1. 該当なし:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions write

    [application setStatusBarHidden:YES];
    
  2. info.plistでこれを追加

    View-Controller Based Status Bar Appearance = NO
    
16
Shaik Riyaz

ステータスバーを表示/非表示にするために従来のUIApplicationメソッドを使用するには、アプリでiOS 7のplist値を設定する必要があります。

View-Controller Based Status Bar Appearance = NO

この値はデフォルトでYESに設定されています。 NOに変更した場合は、従来の方法を使用できます。 YESに設定したままにしても、ステータスバーを非表示にすることはできますが、オーバーライドするのはアプリ内の各View Controllerサブクラスによって異なります。prefersStatusBarHiddenは、YESを返します。

ステータスバーの外観や表示設定の変更が必要で、View Controllerベースのステータスバーの外観がYESに設定されている場合は、最も外側のView Controllerを呼び出す必要があります。

setNeedsStatusBarAppearanceUpdateAnimation

15
jaredsinclair

この問題に対して推奨される組み合わせは非常に多数ありますが、問題は、iOS 6と7ではステータスバーを非表示にする方法が異なることです。 iOS 7でiOS 6スタイルの動作を有効にするためのplist設定の設定に成功したことは一度もありませんが、iOS 6+をサポートするようにアプリを構築している場合はバー:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

これはあなたのplist設定に関係なく動作するはずです。

11
SaltyNuts

ステータスバーを隠すには、以下の両方の変更をしなければなりませんでした。

ステータスバーを非表示にするビューコントローラにこのコードを追加します。

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

これをあなたの.plistファイルに追加してください(あなたのアプリケーション設定の 'info'に行きます)。

View controller-based status bar appearance --- NO

その後、この行を呼び出してステータスバーを非表示にすることができます。

[[UIApplication sharedApplication] setStatusBarHidden:YES];
7
Peter Y

この2行をinfo.plistファイルに追加するだけです。それはiOS7とそれ以前のバージョンの両方に対する修正を行います。

  • ステータスバーは最初は非表示です= YES
  • コントローラベースのステータスバーの外観を表示= NO

プロジェクトに移動して「ターゲット」 - >「一般」を選択し、「ステータスバーのスタイル...アプリケーションの起動時に非表示にする」チェックボックスを選択します。これはうまくいくでしょう。

6
Sid

この簡単な方法を試してください。

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

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
6

私のために働いた唯一のことはあなたのplistに以下を追加することです。

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
4
bartburkhardt

アプリ全体でステータスバーを非表示にするための最も簡単な方法は、categoryUIViewControllerを作成し、prefersStatusBarHiddenをオーバーライドすることです。こうすれば、すべてのView Controllerにこのメソッドを記述する必要がなくなります。

UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIViewController + HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end
4
mike
  1. Plistに追加----

    コントローラベースのステータスバーの外観を表示--- NO

  2. 各viewControllerに次のように書きます。

    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.Origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }
    

IOS 7のステータスバーの問題ですが、アプリのターゲットは5.1以上である必要があります

3
user2823580

-(BOOL)prefersStatusBarHidden { return YES; }

3
Thunderbird

IOS 7のステータスバーを隠すには:

1.アプリケーションのinfo.plistファイルに移動します。

2.And Set、View Controllerベースのステータスバーの外観:ブールNO

私はステータスバーの問題を解決したい.....

3
chandrika

IOS 7では、単一ビューでviewWillappearメソッドを使用します。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

ステータスバーを表示するには:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
3
oscar castellon

Info Plistファイル内次のプロパティに行を追加する

プロパティ名:ビューベースのステータスバーの外観

値:NO

2
user842553

このスレッドに関する答えの多くはうまくいきますが、動的に何かをやろうとしているのなら私の理解です。

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
2
darkheartfelt

私は自分のプロジェクトにここに掲載されているこれらすべてのオプションを試してみましたが、うまくいきませんでした。それは私がXcodeを更新し、それからアプリをiOS 7に更新し、そしていくつかの設定がどこかでめちゃくちゃになったという事実に関係していると私は考えた。私はそれのために全く新しいプロジェクトを構築することに決めました、そして、それが正しく働いた(すなわち、ステータスバーなし)と言われるように、単純な設定:「Status bar is initially hidden = YES」と「View controller-based status bar appearance = NO」。

古いバージョンからiOS 7にアップデートされ、他のすべてのオプションを試したプロジェクトで作業しているのであれば、私のアドバイスは新しいプロジェクトを構築することです。

1
user1529408

2019年に向けて...

ステータスバーのないアプリを作成するには、

Info.plistをクリックし、右クリックして「行を追加」します。

次の設定でこれら2つを追加します。

enter image description here

これですべてです。

1
Fattie

アプリのルートView Controllerに次のメソッドを追加してみてください。

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
1
BHUPI
0
Alex Nazaroff

特定のviewControllerのステータスバーを非表示にする

- (BOOL)prefersStatusBarHidden {
    return YES;
}

ステータスバーを設定する場合アプリケーションに非表示:

  • .plistおよびView controller-based status bar appearanceapplication: didFinishLaunchingWithOptions:toNOを設定します。set:[application setStatusBarHidden:YES];

    注:setStatusBarHidden:廃止予定です

OR

  • プロジェクト設定 - >一般タブ - >配置情報

    Hide Status barボックスをチェックしてください。

0
Lal Krishna

Swift 2.0以降の場合IOS 9

override func prefersStatusBarHidden() -> Bool {
return true
}
0
Irshad Qureshi