2017-10-22 87 views
5

Mam kontroler nawigacyjny, gdzie koloruję pasek nawigacyjny z pewnym kolorem i chcę, aby pasek stanu (który pokazuje operatora, symbol wifi itp.) Używał taki sam kolor.Pasek stanu nie ma tego samego koloru co pasek nawigacyjny

Tak więc w Info.plist ustawiłem View controller-based status bar appearance equal na NO. Aw Target > Deployment Info ustawić Status Bar Style > Light:

enter image description here

widzę, że pasek stanu jest teraz rzeczywiście używając „light” styl jako tekst jest jasny/biały. Ale tło paska stanu wciąż nie jest takie samo jak pasek nawigacji, jak pokazano poniżej. Jak mogę to poprawić?

enter image description here

Odpowiedz

6

Musisz użyć tak:

if let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView { 
    statusBar.backgroundColor = UIColor.purple 
} 

Jeśli chcesz zmienić kolor paska stanu całej aplikacji, użyj go w appdelegate->didFinishLaunchingWithOptions. Lub jeśli chcesz zmienić dla jakiegoś konkretnego ekranu, a następnie zadzwoń w konkretnym viewDidLoad.

+1

Działa, ale nie jestem pewien, czy jest to optymalne rozwiązanie. Kiedy zmieniam styl paska stanu na "jasny", powinien automatycznie przyjąć kolor paska nawigacji, prawda? – rgamber

+0

@rgamber, czy znalazłeś bardziej optymalne rozwiązanie? – sbru

+1

Niestety nie. Nic innego nie działa, więc tymczasowo się do tego uciekamy. Jeśli znajdziesz inny sposób, opublikuj go tutaj! – rgamber