it-swarm.com.de

Wie blende ich die Statusleiste in einer Swift iOS App aus?

Ich möchte die Statusleiste oben auf dem Bildschirm entfernen.

Das funktioniert nicht:

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

Ich habe auch versucht:

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
}
169
Jay

Sie sollten prefersStatusBarHidden auf Ihren View-Controllern implementieren:

Swift 2

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

Swift 3 und später

override var prefersStatusBarHidden: Bool {
    return true
}
397
drewag
  1. Gehen Sie zur Info.plist-Datei
  2. Bewegen Sie den Mauszeiger auf eine dieser Zeilen, und eine Schaltfläche (+) und (-) wird angezeigt.
  3. Klicken Sie auf die Plus-Schaltfläche, um einen neuen Schlüssel hinzuzufügen. Geben Sie den Anfangsbuchstaben "Großbuchstabe V" ein. Als erstes wird automatisch die Option Controller-basierte Statusleiste anzeigen angezeigt.
  4. Fügen Sie das als den Schlüssel hinzu.
  5. Stellen Sie den VALUE auf "NO"
  6. Gehen Sie zu AppDelegate.Swift
  7. Fügen Sie den Code innerhalb der Methode hinzu

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

ERLEDIGT! Führen Sie Ihre App und keine Statusleiste mehr aus!

95
nycdanie

Swift 3

In Info.plist setzen Sie View controller-based status bar appearance auf NO

Und UIApplication.shared.isStatusBarHidden = true anrufen

68
Joseph Mark

Wenn Sie die Statusleiste auf Tastendruck ein- und ausblenden möchten, während Sie Einblendmenü, Popups usw. anzeigen und wieder schließen Sie können diese Methode verwenden: -

So blenden Sie die Statusleiste aus: -

UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar

So rufen Sie die Statusleiste zurück: -

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

wenn Sie einen visuellen Ansatz bevorzugen, anstatt ihn zu codieren, verwenden Sie diese Methode: in Ihrem info.plist

 enter image description here einfach View controller-based status bar appearance zu NO hinzufügen

und Status bar is initially hidden als YES

31
Milad Masoodi

Update für iOS 10/Swift 3.0

Keine Funktion mehr, jetzt eine Eigenschaft ... 

override var prefersStatusBarHidden: Bool {
    return true
}
27
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
}
25
Mohit tomar

in Swift 3.x:

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

Gehen Sie zu Ihrer Info.plist und fügen Sie zwei Schlüssel hinzu:

 Go to your Info.plist and add two Keys:

12
janaz

Das Problem hier hat also nichts mit Swift zu tun, sondern wie die Statusleiste ab iOS 7 gehandhabt wird.

Standardmäßig steuern View-Controller das Erscheinungsbild der Statusleiste individuell, wenn sie auf dem Bildschirm angezeigt werden. Wenn Sie diese Methode zum Steuern der Statusleiste verwenden möchten, können Sie die folgenden Methoden für die Ansichtssteuerungen überschreiben, für die Sie das Erscheinungsbild ändern möchten:

prefersStatusBarHidden, preferredStatusBarStyle, preferredStatusBarAnimation,

In Ihrem Fall würden Sie einfach prefersStatusBarHidden implementieren und true zurückgeben.

Die andere Möglichkeit wäre, die Darstellung der Statusleiste auf Anwendungsebene zu steuern. Dies scheint das zu sein, was Sie tatsächlich versuchen (durch Setzen von application.statusBarHidden).

Damit dies funktioniert, müssen Sie die Info.plist-Datei Ihrer App öffnen, den Schlüssel UIViewControllerBasedStatusBarAppearance hinzufügen und ihm den Wert NO zuweisen.

12
Dima

Ich habe das selbst herausgefunden. Ich füge meine Lösung als weitere Option hinzu.

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

Okay, das ist für mich zu einem Problem geworden, da iOS 9 keine der oben genannten Methoden unterstützt, wie z. B. UIApplication.sharedApplication().statusBarHidden = true oder

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

und

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

funktioniert, bietet aber keine programmierbare Lösung, bei der ich eine Bedingung ändern kann. (. statusBarHidden = true und statusBarHidden = false wie zuvor). 

Lösung für diesen Wahnsinn:

Durch Hinzufügen zu prefersStatusBarHidden() wie unten können Sie das Ausblenden und Anzeigen der Statusleiste programmgesteuert steuern, ohne dass Sie die Einstellung UIViewControllerBasedStatusBarAppearance zu Ihrer info.plist hinzufügen:

var showStatusBar = true

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

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

dann verwenden Sie es so in Ihrem Code:

//Hide Status Bar
showStatusBar(false)

OR

//Show Status Bar
showStatusBar(true)
4
CodeOverRide

Um nur hinzuzufügen, wenn Sie die prefersStatusBarHidden-Methode oder -Variable überschreiben, muss der View controller-based status bar appearance in der Info.plist auf YES gesetzt sein

3
Huanyan

In meinem Fall habe ich nach der Statusleiste gesucht, die bei Bedarf angezeigt/ausgeblendet werden kann. anstatt nur, wenn die Ansicht geladen oder ausgeblendet wird. 

Swift 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()
2
Felecia Genet

In Ihrem Projekt Allgemein-> Bereitstellungsinfo-> StatusleistenstilAktivieren Sie das Kontrollkästchen Statusleiste ausblenden Hinweis: Die Statusleiste wird in der gesamten Anwendung ausgeblendet

2
Sweta Vani

in Swift 4.2 ist es jetzt eine Eigenschaft. 

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

Schnell 4

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

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

Für Swift 4+ versuchen Sie den folgenden Code (getestet mit 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: Im Hauptansichts-Controller oder im Hauptnavigations-Controller, wenn Sie haben,

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

Und "Controller-basiertes Statusleisten-Erscheinungsbild anzeigen" in plist muss JA lauten, sonst wird der obige Code nicht aufgerufen.

Wenn Sie die Statusleiste beim Starten der App ausblenden möchten, muss "Statusleiste ist anfangs ausgeblendet" in plist auf JA stehen. Dies kann verhindern, dass das Startbild verzerrt wird, wenn ein zusätzlicher blauer Balken oben auf dem Bildschirm angezeigt wird.

1
Sam Xu

Eine Lösung, die für mich funktioniert; Wenn Sie die Statusleiste beim Laden eines bestimmten View-Controllers ausblenden möchten:

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()
    }
}

Achtung: Wenn Sie in Ihrer info.plist die Taste " Controller-basierte Statusleiste anzeigen " auf "NO" setzen, funktioniert der obige Code nicht. Sie sollten den Schlüssel auf "YES" oder remove it aus info.plist setzen 

1
andre_hold

In Ihrem Projekt-> Allgemein-> Bereitstellungsinfo 

Statusleistenstil: -

gerade markierte Statusleiste ausblenden (iOS 10)

0
V D Purohit

Sie können diesen Code in Ihrer ViewControllerClassscope verwenden. 

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

Wenn Sie den View Controller modal präsentieren, versuchen Sie es

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

Ich verwende Xcode 8.1 (8B62) mit einem Implementierungsziel, das auf 10.1 gesetzt ist, und ich hatte mit den oben genannten Überschreibungsoptionen nicht viel Glück. Das Aktivieren der Option "Statusleiste ausblenden" in Deployment Info hat mir jedoch geholfen.

Projekt> Allgemeines

Ich hoffe das hilft.

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