Ich versuche, den Stil meiner Statusleiste in .Light
Zu ändern, aber der vorherige Code, den ich in Swift 1.2 implementiert habe, scheint nicht mehr zu funktionieren. Hier ist der Code:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
jetzt habe ich die info.plist-Einstellung View controller-based status bar appearance
auf YES gesetzt und beim Lesen des UIKit-Dokuments werden alle StatusBarStyle-Änderungen annulliert und die Standardeinstellungen beibehalten. Wenn ich jedoch die Einstellung auf "NEIN" ändere und den Status "BarStyle" ändere, wird dieses <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
In meinem Debugger angezeigt. Handelt es sich also um einen Fehler in Xcode? weil, um den Statusleistenstil zu ändern, müssen Sie die info.plist-Einstellung auf NEIN ändern, aber wenn das passiert, tritt ein Fehler auf
Ich habe es immer so gemacht.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//Changing Status Bar
override func preferredStatusBarStyle() -> UIStatusBarStyle {
//LightContent
return UIStatusBarStyle.LightContent
//Default
//return UIStatusBarStyle.Default
}
}
Es funktioniert in jeder Swift 2.x Version. Dies setzt voraus, dass Sie View controller-based status bar appearance
in deinem Info.plist
Datei zu YES
.
Sie können preferredStatusBarStyle
weiterhin in Ihrem View-Controller verwenden:
schritt 1: Setzen Sie in der info.plist ViewControllerBasedStatusBarAppearance auf YES. Schritt 2: Fügen Sie diesen Code dem ViewController hinzu, den Sie bearbeiten möchten:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
*** Tipp: Es scheint nur außerhalb der Funktionen ViewDidLoad (), didReceiveMemoryWarning () zu funktionieren.
Swift 3 fügen Sie einfach View controller-based status bar appearance
Mit dem Wert NO
zu info.plist
Hinzu und fügen Sie dann zu ViewController
hinzu, wo Sie möchten:
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
Die Änderung in den Bereitstellungsinformationen funktioniert jedoch trotzdem. Sie müssen den Schlüssel "Controller-basiertes Statusleisten-Erscheinungsbild anzeigen" hinzufügen, um die Plist-Datei auf NEIN zu setzen.
Sie können dies auch einfach in AppDelegate hinzufügen. Diese Option ist besser, wenn Sie sie für jeden ViewController in der App ändern möchten und sie nicht für jeden anderen VC anders gestalten müssen.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarStyle = UIStatusBarStyle.LightContent
// instead of
// UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
// which gives warning about deprecation in iOS 9
return true
}
Hier versuchen Sie dies, es könnte Ihnen helfen
Gehen Sie zuerst zur Datei info.plist und fügen Sie diese "Controller-basierte Statusleiste anzeigen" als Schlüssel hinzu und setzen Sie den Wert auf NO
danach kommen Sie zur AppDelegate.Swift-Datei und fügen diese UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
Codezeile ein
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
return true
}
so was
Sie können in den Bereitstellungsinformationen "Licht" auswählen, müssen dann aber auch das "Controller-basierte Statusleisten-Erscheinungsbild anzeigen" hinzufügen und auf "NEIN" setzen.
Verwenden Sie für Swift 3 die Variable preferredStatusBarStyle:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
Es sieht so aus, als wäre es ein Fehler in Xcode 7.0. Ich bekomme auch die Error>: CGContextSaveGState: invalid context 0x0.
Fehler beim Einstellen von View controller-based status bar appearance
Im Moment überschreibe ich nur die Farbe der Statusleiste in jedem Ansichtscontroller.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Die vorhandenen Antworten sind großartig, aber mit den neuen Updates ist es jetzt ein bisschen anders!
override var
jetzt statt override func
für alle, die verwirrt sind - der Inhalt ist immer noch derselbe und Sie müssen Ihre 'Info.plist' noch ändern:
override var preferredStatusBarStyle: UIStatusBarStyle
{
//LightContent
return UIStatusBarStyle.lightContent
//Default
//return UIStatusBarStyle.default
}
Wenn Sie es von Zeit zu Zeit in Ihrer App ändern möchten, können Sie die bereits erwähnten Überschreibungen preferredStatusBarStyle()
verwenden.
Stellen Sie einfach sicher, dass Sie auch setNeedsStatusBarAppearanceUpdate()
aufrufen, nachdem Sie preferredStatusBarStyle()
aufgerufen haben, um IOS) darüber zu informieren.