Sök…


För statusfält som inte är UINavigationBar

  1. I info.plist ställ in View controller-based status bar appearance till YES
  2. För att se styrenheter som inte ingår av UINavigationController implementerar denna metod.

I mål-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

I Swift:

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

För UINavigationBar-statusfält

Underklass UINavigationController och åsidosätta sedan dessa metoder:

I mål-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

I Swift:

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

Alternativt kan du ställa in barStyle i UINavigationBar instansen:

Mål C:

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

Snabb

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

UIBarStyle alternativ är default , black , blackOpaque , blackTranslucent . De sistnämnda 3 bör alla ge dig en statusfält med vit text, bara de två sista specificerar barens opacitet.

Obs! Du kan fortfarande ändra utseendet på navigeringsfältet som du vill.

Om du inte kan ändra ViewControllers kod

Om du använder bibliotek som innehåller (till exempel) AwesomeViewController med fel statusfärgsfärg kan du prova detta:

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

För ViewController-inneslutning

Om du använder UIViewControllerContainment finns det några andra metoder som är värda att titta på.

När du vill att en barnvisningskontroller ska styra presentationen av statusfältet (dvs. om barnet är placerat högst upp på skärmen

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

Ändra statusfältet för hela applikationen


SNABB:


Steg 1:

Lägg till följande attribut i din Info.plist :

View controller-based status bar appearance

och ställ in dess värde till

NO

som beskrivs på bilden nedan:

ange bildbeskrivning här

Steg 2:

Lägg till den här koden i din AppDelegate.swift- fil, i didFinishLaunchingWithOptions metoden:

UIApplication.shared.statusBarStyle = .lightContent

eller

UIApplication.shared.statusBarStyle = .default
  • Alternativet .lightContent ställer in färgen på statusfältet till vitt för hela appen.

  • Alternativet .default ställer in färgen på statusfältet till den ursprungliga svarta färgen för hela appen.


MÅL-C:


Följ det första steget från SWIFT- avsnittet. Lägg sedan till den här koden till filen AppDelegate.m :

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

eller

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow