2015-09-10 5 views
29

Ich habe mit wordenUIApplication.sharedApplication(). SetStatusBarStyle() in iOS veraltet 9

UIApplication.sharedApplication().setStatusBarStyle() 

In meinem AppDelegate und es hat funktioniert gut, aber seit iOS 9, diese Methode ist veraltet und kann ich nicht finde eine Alternative.

Ich möchte den Statusbar-Stil zu .LightContent für meine gesamte Anwendung, ändern, aber der einzige Vorschlag, den xCode gibt mir ist, dies in jeder VC getrennt zu behandeln mit;

override func preferredStatusBarStyle() -> UIStatusBarStyle { 
    return .LightContent 
} 

Hat jemand eine Idee, wie man das für die ganze Anwendung macht?

Vielen Dank im Voraus

+1

Habe das gleiche Problem. Für alle meine View-Controller in der Anwendung verwende ich "BaseViewController" Superklasse, wo ich diesen Stil festlegen. –

+0

@AlexanderKaraberov Vielen Dank für Ihren Kommentar, ich habe über Ihre Methode vor, aber ich war mir nicht sicher, ob das der beste Weg war, aber es scheint wie die beste Option für jetzt. – Rick

+0

Wenn Sie den 'UINavigationController' verwenden, dann ist hier die Antwort http://stackoverflow.com/questions/32730211/how-we-can-set-the-light-content-style-of-status-bar-in- ios-9-for-whole-applicat/ –

Antwort

57

Ich denke, dass ich eine Lösung gefunden zu haben. Ich landete die Datei

View controller-based status bar appearance boolean NO

In meiner info.plist Einstellung.

Info.Plist

Dann ging ich zu meinem Ziel des General settings -> Deployment info und geändert, um die Drop-Down-Option Status Bar Style-Light statt Default

Change Status Bar Style to Light

Das den Statusbar Stil für meine gesamte Anwendung Light geändert, nur was ich wollte.

Ich hoffe, das hilft!

+1

Also gibt es zwei Möglichkeiten, es zu tun. Führen Sie die obigen Schritte aus, und legen Sie die Controller-basierte Statusleistenerscheinung auf NEIN fest, und legen Sie dann die Bereitstellungsinformationen fest. ODER Legen Sie die controllerbasierte Statusleistenerscheinung auf JA fest, und überschreiben Sie sie in Ihrem Ansichtscontroller mit "override func preferredStatusBarStyle() -> UIStatusBarStyle { Rückgabe UIStatusBarStyle.LightContent } ' – justdan0227

+0

arbeitete für mich danke. – Mikrasya

+1

Das Dropdown-Menü für den Statusleistenstil fehlt in xcode 7.2. Wo kann ich es finden? @Rick? –

-1

Dies ist die neue Art und Weise in AppDelegate ist:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 
+3

Wenn Sie dies im AppDelegate verwenden, heißt es immer noch, es sei entschärft. – justdan0227

+0

ist es auch entzogen. –

+0

Dies ist das Gleiche –

1

Dieser arbeitete für mich in Xcode feinen 7.

In AppDelegate:

UIApplication.sharedApplication().statusBarStyle = .LightContent 
+0

Das funktioniert, aber es ist in iOS 9.0 veraltet. Immer noch wird eine Warnung ausgegeben und die Arbeit in einer zukünftigen iOS-Iteration beendet. – Scooter

-1

In info.plist setzen: View controller-based status bar appearance boolean NO

In didFinishLaunchingWithOptions App delegieren, verwenden Sie die Funktion Parameter application (und nicht die [UIApplication sharedApplication] oder similary die UIApplication.sharedApplication() in Swift), um dies wie folgt einzustellen:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    application.statusBarStyle = UIStatusBarStyleLightContent; 
} 
+0

Irgendwelche Kommentare dazu, warum diese Antwort verwerfen? Für mich geht das. – Despotovic

+0

Da einige der Benutzer bereits geantwortet haben, wird dies nicht empfohlen, da der direkte Zugriff auf die Variable statusBarStyle veraltet ist. Es wird Ihnen eine Warnung angezeigt, die Ihre App in Zukunft möglicherweise beschädigen könnte. –

5

In Swift 3.

Ihrer Ansicht Controller:

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return UIStatusBarStyle.lightContent 
} 

Wenn Sie wünschen, wenn die App Ihre Start-Bildschirm laufen hat auch die Statusleiste in lightContent dann:

enter image description here

8

In Swift 3 ähnlich ist :

UIApplication.shared.statusBarStyle = .lightContent 
1

für diejenigen, die immer noch mit Swif arbeiten t 3 in Xcode 8:

(etwas anders zu Marlon Ruiz Antwort oben, nicht eine Überbrückungsfunktion, sondern innerhalb viewDidLoad)

override func viewDidLoad() { 
    super.viewDidLoad() 

    var preferredStatusBarStyle: UIStatusBarStyle { 
     return .lightContent 
    } 
}