iOS
Ändra statusfärg
Sök…
För statusfält som inte är UINavigationBar
- I info.plist ställ in
View controller-based status bar appearance
tillYES
- 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:
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];