iOS
Zmień kolor paska stanu
Szukaj…
Dla pasków stanu innych niż UINavigationBar
- W info.plist ustaw
View controller-based status bar appearance
naYES
- W widoku kontrolery nie zawarte w
UINavigationController
implementują tę metodę.
W celu C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
W Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Dla pasków stanu UINavigationBar
Podklasę UINavigationController, a następnie przesłonić następujące metody:
W celu C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
W Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .lightContent
}
Alternatywnie możesz ustawić barStyle
w instancji UINavigationBar
:
Cel C:
// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack; // this will give you a white status bar
Szybki
// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar
Opcje UIBarStyle
są default
, black
, blackOpaque
, blackTranslucent
. Te ostatnie 3 powinny dać ci pasek stanu z białym tekstem, tylko dwa ostatnie określają krycie paska.
Uwaga: nadal możesz zmienić wygląd paska nawigacyjnego, jak chcesz.
Jeśli nie możesz zmienić kodu ViewController
Jeśli używasz biblioteki zawierającej (na przykład) AwesomeViewController z niewłaściwym kolorem paska stanu, możesz spróbować:
let awesomeViewController = AwesomeViewController()
awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style
Do przechowywania ViewController
Jeśli używasz UIViewControllerContainment
istnieje kilka innych metod, na które warto zwrócić uwagę.
Gdy chcesz, aby widok podrzędny Sterownik sterował prezentacją paska stanu (tj. Jeśli dziecko znajduje się u góry ekranu)
w Swift
class RootViewController: UIViewController {
private let messageBarViewController = MessageBarViewController()
override func childViewControllerForStatusBarStyle() -> UIViewController? {
return messageBarViewController
}
override func viewDidLoad() {
super.viewDidLoad()
//add child vc code here...
setNeedsStatusBarAppearanceUpdate()
}
}
class MessageBarViewController: UIViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .Default
}
}
Zmiana stylu paska stanu dla całej aplikacji
SZYBKI:
Krok 1:
W swoim Info.plist dodaj następujący atrybut:
View controller-based status bar appearance
i ustaw jego wartość na
NO
jak opisano na obrazku poniżej:
Krok 2:
W pliku AppDelegate.swift w metodzie didFinishLaunchingWithOptions
dodaj ten kod:
UIApplication.shared.statusBarStyle = .lightContent
lub
UIApplication.shared.statusBarStyle = .default
Opcja .lightContent ustawi kolor paska statusu na biały dla całej aplikacji.
Opcja .default ustawi kolor paska statusu na oryginalny czarny kolor dla całej aplikacji.
CEL C:
Wykonaj pierwszy krok z sekcji SWIFT . Następnie dodaj ten kod do pliku AppDelegate.m :
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
lub
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];