2017-03-09 3 views
0

Ich verwende den Code:Wie der StatusBar Stil mit Code zur Steuerung in Swift3.0

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return UIStatusBarStyle.lightContent 
} 

und ich füge hinzu

<key>UIViewControllerBasedStatusBarAppearance</key><false/> 

in Info.plist.

Aber die StatusBar ist immer noch schwarz Stil! Warum?

+0

Sie brauchen getan Methode verwenden Overrite in Appdelegate: 'didFinishLaunchingWithOptions' einfach den Code der Zeile: UIApplication.shared.statusBarStyle = .lightContent –

+0

@NitinGohel, bitte, schlagen Sie nicht den Code, der veraltet ist. Das programmatische Festlegen des Statusleisten-Stils wurde auf iOS 9.0 nicht mehr empfohlen. Auch wenn es für die aktuelle Version von iOS funktioniert, kann es in zukünftigen Versionen möglicherweise nicht funktionieren. –

+0

ist es wirklich wichtig :) @FahriAzimov dann bitte posten Sie Ihre Antwort für die Hilfe anstatt verschwenden Sie Ihre Zeit :) –

Antwort

1

Es funktioniert nicht, weil Sie in Info.plist<key>UIViewControllerBasedStatusBarAppearance</key><false/> angegeben haben. Ändern Sie diesen Schlüssel zu true, und es wird funktionieren. Der Grundgedanke hinter diesem Schlüssel ist, wenn er wahr ist, dass Anwendung in Ihrem View-Controller-Code für den Statusleistenstil für die Implementierung von preferredStatusBarStyle (für Statusleistenstil) und prefersStatusBarHidden (für ob es die Statusleiste für diesen Ansichtscontroller ausblenden sollte) aussieht. Und wenn der Schlüssel UIViewControllerBasedStatusBarAppearance false ist, sucht die Anwendung nach den globalen Einstellungen, die im Bereich General der Zieleinstellungen definiert sind (wählen Sie die Projektdatei im Projektnavigator in xcode).

Auch Sie im Auge behalten, dass, wenn Ihre View-Controller auf Behälter wie UINavigationController oder UITabbarController, um die Statusleiste Aussehen zu verändern, müssen Sie diese Behälter (write-Erweiterung) erstreckt, und außer Kraft setzen preferredStatusBarStyle Eigenschaft .

Sie können this Antwort auf SO ebenso überprüfen.

1

SWIFT 3

UINavigationController View-Controller-Stil ihrer bevorzugten statusbar überschreibt. Sie können Subklassen die UINavigationController Steuerung zurück zum View-Controller geben:

class BaseNavigationController: UINavigationController { 

var statusBarStyle: UIStatusBarStyle? 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return statusBarStyle ?? .default 
} 

Und dann sind in der Lage Ihnen die statusBarStyle Eigenschaft im View-Controller gesetzt:

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    if let navigationController = navigationController as? BaseNavigationController { 
     navigationController.statusBarStyle = preferredStatusBarStyle 
    } 
} 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .default // any style you want 
}