2015-09-23 11 views
11

Chcę zastosować styl Light Content do całej aplikacji.W jaki sposób ustawić styl Light Content paska stanu w systemie iOS 9 dla całej aplikacji?

Następująca metoda jest przestarzała w systemie iOS 9 bez metody zastępowania.

-setStatusBarStyle: animowane:

Ustawia styl na pasku stanu, ewentualnie animowanie przejścia do nowego stylu.

pracuje w AppDelegate jak jak:

Swift 1.2 Kod:

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

Ale kiedy uaktualnić mój projekt do iOS 9/Swift 2 oni dają mi ostrzeżenie wiadomość o :

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 

Tak jak na rozwiązanie z apple forum i od tej odpowiedzi CGContextSaveGState: invalid context 0x0 Error only on device

Więc usunąłem właściwość UIViewControllerBasedStatusBarAppearance z pliku info.plist zgodnie z roztworu.

Teraz sytuacja jest taka, że ​​W jaki sposób ustawić styl Light Content paska statusu w systemie iOS 9 dla całej aplikacji?

Z forum:

enter image description here

Nie chcę, aby ustawić światła zawartość dla każdego widoku.

Wszelkie sugestie?

Obiekt C powinien mieć ten sam problem.

+0

Czy używasz kontrolera UINavigationController? – matt

+1

@matt Tak, proszę pana. –

Odpowiedz

27

Możesz zaoszczędzić sobie wiele pracy, używając kontrolera UINavigationController i ustawiając pasek nawigacyjny barStyle na .Black. Trzeba to zrobić tylko raz; możesz to zrobić w edytorze storyboardów.

Spowoduje to automatyczną zmianę stylu paska stanu na .LightContent, o ile ten kontroler UINavigationController jest w użyciu.

+0

Dzięki za odpowiedź, sprawdzę i dam znać. –

+0

Woooa! To działa dobrze :) Wielkie dzięki. Czy możesz zasugerować, co mamy zrobić, jeśli nie ma "UINavigationController"? –

+2

W takim przypadku należy umieścić cały interfejs w niestandardowym kontrolerze widoku rodzica nadrzędnego, który służy jako kontroler widoku głównego dla całej aplikacji i implementuje opcję 'preferredStatusBarStyle'. Albo to albo po prostu ugryź bullet i zaimplementuj 'preferredStatusBarStyle' wszędzie. – matt

0

Można również użyć: UIApplication.shared.statusBarStyle = .lightContent. Działa również w swift3.

+0

Powinien on nadal działać, ale uważam, że został wycofany. –

+0

W swift3 działa, używam go w moim bieżącym projekcie. – Amanpreet

Powiązane problemy