web-dev-qa-db-ja.com

iOS 8アプリでステータスバーを非表示にする

私が試してみました

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

これは何もしません。

そして、Info.plistファイルで「View Controller-based status bar Appearance」を探しましたが、そこにはありません。

Xcode 6のアプリ内で、画面の上部にある白いステータスバー(時計とバッテリーの充電)を非表示にするにはどうすればよいですか?ありがとうございました!

73
Aggressor

そのplistエントリがない限り、各View Controllerでこのメソッドをオーバーライドする必要があります。

Objective-C

-(BOOL)prefersStatusBarHidden{
    return YES;
}

スイフト2

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

Swift 3 +

override var prefersStatusBarHidden: Bool {
    return true
}

設定することを忘れないでください(presentViewController:animated:completion:メソッドを呼び出してView Controllerを提示する場合):

Objective-C

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;

Swift

vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true

ドキュメント: https://developer.Apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb

コンテナビューコントローラからステータスバーを変更する場合(例:子ビューコントローラでUINavigationControllerまたはUIViewController)、ステータスバーを担当するビューコントローラを変更する場合は、childViewControllerForStatusBarHidden:プロパティを使用する必要があります。 。例えば:

常にステータスバー管理を担当する最初のView Controllerインスタンスを設定します

Objective-C

- (UIViewController *)childViewControllerForStatusBarHidden {
    return childViewControllers.first; // or viewControllers.first
}

スイフト2

override var childViewControllerForStatusBarHidden() -> UIViewController? {
    return childViewControllers.first // or viewControllers.first
}

Swift 3 +

override var childViewControllerForStatusBarHidden: UIViewController? {
    return childViewControllers.first // or viewControllers.first
}

ステータスバー管理を担当するコンテナビューコントローラを設定する

Objective-C

- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}

スイフト2

override func childViewControllerForStatusBarHidden() -> UIViewController? {
    return nil
}

Swift 3 +

override var childViewControllerForStatusBarHidden: UIViewController? {
    return nil
}

ドキュメント: https://developer.Apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh

171
VaporwareWolf
  1. Info.plistファイルに移動します
  2. これらの行のいずれかにカーソルを合わせると、(+)および(-)ボタンが表示されます。
  3. プラスボタンをクリックして新しいキーを追加します
  4. を大文字のVで入力すると、最初の選択肢は自動的にコントローラーベースのステータスバーの表示になります。それをキーとして追加します。
  5. VALUEを「NO」に設定します
  6. Objective-Cの場合はAppDelegate.mに移動します(Swift言語の場合:AppDelegate.Swift
  7. メソッド内にコードを追加します

Objective-Cの場合:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setStatusBarHidden:YES];

    return YES;
}

Swiftの場合:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool {
    application.statusBarHidden = true

    return true
}

できた!アプリを実行すると、ステータスバーは不要になります!

120
nycdanie

コードを1行も書かずにステータスバーを非表示にできます。これには、info.plistに2つのエントリが必要です。

「コントローラーベースのステータスバーの外観を表示」を「いいえ」に設定

二番目は

「ステータスバーは最初は非表示」がYESに設定されています

27
CSJordan

Info.plistファイルに行がない場合は、その行を追加できます。 Xcodeのプロジェクトに移動し、「情報」セクションに移動して、既存の行の1つにカーソルを合わせます。 「+」ボタンが表示され、行を追加して「コントローラーベースのステータスバーの外観を表示」を入力できます。

11
Nerrolken

Swift 3を使用するiOS 10の場合、次を使用する必要があります。

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}
9
  1. Info.plistを開く
  2. 「コントローラーベースのステータスバーの外観を表示」を「いいえ」に設定
  3. 「ステータスバーは最初は非表示」がYESに設定されています
  4. 完了

コードを書く必要はありません...乾杯

2
emraz