web-dev-qa-db-ja.com

Swift iOSアプリのステータスバーを隠すにはどうすればいいですか?

画面上部のステータスバーを削除したいのですが。

これは動作しません:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
        application.statusBarHidden = true
        return true
}

私も試してみました:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    application.statusBarHidden = true
    controller.setNeedsStatusBarAppearanceUpdate()

    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "Hello World"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}
180
Jay

あなたは本当にあなたのビューコントローラにprefersStatusBarHiddenを実装するべきです:

Swift 2

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

Swift 3以降

override var prefersStatusBarHidden: Bool {
    return true
}
410
drewag
  1. Info.plistファイルに行く
  2. そのうちの1行にカーソルを合わせると、(+)と( - )のボタンが表示されます。
  3. プラスボタンをクリックして新しいキーを追加します。大文字のVで始めて入力すると、自動的に最初の選択肢はView controller-based status bar appearanceになります。
  4. キーとしてそれを追加します。
  5. VALUEを "NO"に設定してください。
  6. あなたに行きますAppDelegate.Swift
  7. メソッド内にコードを追加します

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
        application.statusBarHidden = true
        return true
    }
    

完了しました。アプリを実行して、ステータスバーはもう必要ありません。

96
nycdanie

Swift 3

Info.plistView controller-based status bar appearanceNOに設定します

そしてUIApplication.shared.isStatusBarHidden = trueを呼び出します

69
Joseph Mark

あなたが表示し、却下しながら、あなたが非表示にしてボタンをタップのステータスバーを戻したい場合スライドインメニューポップアップなど、その後、この方法を使用することができます -

ステータスバーを隠すには: -

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar

ステータスバーを元に戻すには: -

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal 
37
Vincent Joy

コーディングよりも視覚的なアプローチを好む場合は、次のメソッドを使用します。info.plist

enter image description hereNOView controller-based status bar appearanceを追加するだけです。

YESとしてのStatus bar is initially hidden

32
Milad Masoodi

IOS 10/Swift 3.0用のアップデート

もはや機能ではなくなり、プロパティになりました...

override var prefersStatusBarHidden: Bool {
    return true
}
28
atlwx
 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true);
    navigationController?.navigationBar.hidden = true // for navigation bar hide
    UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}
27
Mohit tomar

swift 3.xでは:

override func viewWillAppear(_ animated: Bool) {
    UIApplication.shared.isStatusBarHidden = true
}
15
Samira Ekrami

あなたのInfo.plistに行き、二つのキーを追加してください:

Go to your Info.plist and add two Keys:

12
janaz

そのため、ここでの問題は実際にはSwiftとは無関係ですが、iOS 7以降ではステータスバーの外観がどのように処理されるかだけです。

デフォルトでは、View Controllerは、画面に表示されているときのステータスバーの外観を個別に制御します。ステータスバーを制御するためにこの方法を使用したい場合は、外観を変更したいView Controllerに対して以下の方法をオーバーライドすることができます。

prefersStatusBarHiddenpreferredStatusBarStylepreferredStatusBarAnimation

あなたの場合は、prefersStatusBarHiddenを実装してtrueを返すだけです。

もう1つの方法は、アプリケーションレベルでステータスバーの外観を制御することです。これはあなたが実際にやろうとしていることのようです(application.statusBarHiddenを設定することによって)。

これを機能させるには、アプリのInfo.plistファイルを開き、キーUIViewControllerBasedStatusBarAppearanceを追加して、それにNOの値を与える必要があります。

12
Dima

私は実際にこれを考え出しました。私のソリューションを別の選択肢として追加します。

extension UIViewController {
    func prefersStatusBarHidden() -> Bool {
        return true
    }
}
8
Jay

さて、iOS 9はUIApplication.sharedApplication().statusBarHidden = trueのように、ここで述べた方法のどれもサポートしていないので、これは私にとって問題になります。

UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)

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

動作しますが、私は条件で変更することができますプログラム可能な解決策を提供していません。 (statusBarHidden = truestatusBarHidden = falseは以前に行ったように).

この狂気に対する解決策:

以下のようにprefersStatusBarHidden()に追加することで、あなたのinfo.plistUIViewControllerBasedStatusBarAppearance設定を追加することなく、プログラムでステータスバーの表示/非表示を制御できます。

var showStatusBar = true

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

private func showStatusBar(enabled: Bool) {
    showStatusBar = enabled
    prefersStatusBarHidden()
}

それからあなたのコード全体でこのようにそれを使ってください:

//Hide Status Bar
showStatusBar(false)

OR

//Show Status Bar
showStatusBar(true)
4
CodeOverRide

swift 4.2では、現在プロパティです。

override var prefersStatusBarHidden: Bool {
    return true
}
3
Rawand Saeed

prefersStatusBarHiddenメソッドまたは変数をオーバーライドするときは、Info.plistのView controller-based status bar appearanceをYESにする必要があります。それ以外の場合、オーバーライドは効果がありません。

3
Huanyan

私の場合、オンデマンドで表示または非表示にするステータスバーを探していました。ビューがロードまたは表示されなくなったときだけではありません。

スイフト3.x

//show status bar initially
var showStatusBar = true

//set the parameters
override var prefersStatusBarHidden: Bool {

    if showStatusBar == true {

        //does not prefer status bar hidden
        print("does not prefer status bar hidden")
        return false

    } else {

        //does prefer status bar hidden
        print("does prefer status bar hidden")
    return true

    }
}

//ex: hide status bar and call parameter function again whenever you want
        showStatusBar = false
        setNeedsStatusBarAppearanceUpdate()
3
Felecia Genet

プロジェクトの[全般] - > [デプロイメント情報] - > [ステータスバーのスタイル]で[ステータスバーを隠す]のチェックマークをオンにします。注: - アプリケーション全体でステータスバーを非表示にします。

2
Sweta Vani

スイフト4

//MARK:- Show Status Bar
UIApplication.shared.isStatusBarHidden = false

//MARK:- Hide Status Bar
UIApplication.shared.isStatusBarHidden = true
1
Shakeel Ahmed

Swift 4以降の場合は、次のコードを試してください(Swift 4.0、4.1 - IOS 10、11でテスト済み)。

override var prefersStatusBarHidden: Bool { return true }

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    // call this func to force preferredStatusBarStyle to be read again.
    setNeedsStatusBarAppearanceUpdate()
}
1
Coder ACJHP

Swift 5:メインビューコントローラー、またはメインナビゲーションコントローラーがある場合は、

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

また、plistの「View controller-based status bar Appearance」はYESでなければなりません。そうでない場合、上記のコードは呼び出されません。

アプリの起動時にステータスバーを非表示にする場合、plistの「ステータスバーは最初は非表示」がYESである必要があります。これにより、画面上部に余分な青いバーが表示されたときに起動画像が歪むのを防ぐことができます。

1
Sam Xu

私のために働く解決策。ロード中に特定のView Controllerのステータスバーを非表示にする場合は、次の手順を実行します。

import UIKit

class ViewController: UIViewController {

private var hideStatusBar: Bool = false

override var prefersStatusBarHidden: Bool {
    return hideStatusBar
}

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
    return UIStatusBarAnimation.slide
}

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundcolor = .white
    hideStatusBar = true

    UIView.animate(withDuration: 0.3) {
        self.setNeedsStatusBarAppearanceUpdate()
    }
}

重要:キー「View Controllerベースのステータスバーの外観」を「NO "info.plistでは上記のコードは機能しません。キーを "YES"またはremoveに設定します。 info.plistから

1
andre_hold

プロジェクト - >一般 - >配置情報

ステータスバーのスタイル: -

ステータスバーを非表示にする(iOS 10)

0
V D Purohit

このコードをあなたのViewControllerClassscopeで使うことができます。

open override var prefersStatusBarHidden: Bool { return true }
0
Sajjad

View Controllerをモーダルモードで表示している場合は、試してください。

viewController.hidesBottomBarWhenPushed = true
viewController.modalPresentationCapturesStatusBarAppearance = true
0
YannSteph

私は10.1に設定されたデプロイメントターゲットでXcode 8.1(8B62)を使用しています、そして私は上で述べられた上書きオプションであまり運がありませんでした。しかし、展開情報の[ステータスバーを隠す]オプションをチェックしてもうまくいきませんでした。

プロジェクト>一般

これが役に立つことを願っています。

0
danmerfeld
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        application.isStatusBarHidden = true
        return true
    }
0
Prasad Bulbule