Zoeken…


Voor niet-UINavigationBar-statusbalken

  1. Stel in info.plist View controller-based status bar appearance op YES
  2. In het zicht implementeren controllers die niet zijn opgenomen in UINavigationController deze methode.

In doelstelling-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

In Swift:

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

Voor UINavigationBar-statusbalken

Subklasse UINavigationController en vervang vervolgens deze methoden:

In doelstelling-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

In Swift:

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

Als alternatief kunt u barStyle op de instantie UINavigationBar :

Doelstelling C:

// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;  // this will give you a white status bar

Snel

// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar

UIBarStyle opties zijn default , black , blackOpaque , blackTranslucent . De laatste 3 zou je allemaal een statusbalk met witte tekst moeten geven, alleen de laatste twee geven de dekking van de balk aan.

Opmerking: u kunt de weergave van uw navigatiebalk nog steeds naar wens wijzigen.

Als u de code van ViewController niet kunt wijzigen

Als u een bibliotheek gebruikt die bijvoorbeeld AwesomeViewController bevat met een verkeerde statusbalkkleur, kunt u dit proberen:

  let awesomeViewController = AwesomeViewController()
  awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style

Voor beheersing van ViewController

Als u UIViewControllerContainment , zijn er een paar andere methoden die het bekijken waard zijn.

Wanneer u een child viewController wilt om de presentatie van de statusbalk te besturen (dwz als het kind bovenaan het scherm staat

in 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 
    }
}

De statusbalkstijl wijzigen voor de hele applicatie


SNEL:


Stap 1:

Voeg in uw Info.plist het volgende kenmerk toe:

View controller-based status bar appearance

en stel de waarde in op

NO

zoals beschreven in de onderstaande afbeelding:

voer hier de afbeeldingsbeschrijving in

Stap 2:

Voeg deze code toe in uw AppDelegate.swift- bestand, in de methode didFinishLaunchingWithOptions :

UIApplication.shared.statusBarStyle = .lightContent

of

UIApplication.shared.statusBarStyle = .default
  • Met de optie .lightContent wordt de kleur van de statusbalk ingesteld op wit, voor de hele app.

  • Met de optie .default wordt de kleur van de statusBar ingesteld op de oorspronkelijke zwarte kleur voor de hele app.


DOELSTELLING C:


Volg de eerste stap van de SWIFT- sectie. Voeg vervolgens deze code toe aan het AppDelegate.m- bestand:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

of

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow