Szukaj…


Dla pasków stanu innych niż UINavigationBar

  1. W info.plist ustaw View controller-based status bar appearance na YES
  2. 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 UIBarStyledefault , 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:

wprowadź opis zdjęcia tutaj

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];


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow