Ich möchte eine weiße Statusleiste in meiner App. Dafür setze ich View controller-based status bar appearance
auf NO
und Status bar style
auf UIStatusBarStyleLightContent
. Aber jetzt muss ich die Statusleiste in einigen Ansichtscontrollern ausblenden. Um es auszublenden, muss ich View controller-based status bar appearance
auf YES
setzen und - (BOOL)prefersStatusBarHidden {return YES;}
hinzufügen. Die Statusleiste ist jetzt schwarz. Es ist schwarz, wenn View controller-based status bar appearance
YES
ist, und weiß, wenn NO
. Die Frage ist also, wie die weiße Statusleiste gesetzt und ausgeblendet wird.
UPD: Code in VC, den ich weiße Statusleiste haben möchte (prefferdSTatusBarStyle
nicht aufgerufen)
code in VC mit ausgeblendeter Statusleiste
.plist Einstellungen
Das Ergebnis ist eine schwarze Statusleiste, die sich in einigen virtuellen Computern versteckt
UPD2:
Ich weiß, dass es schlecht ist, veraltete Methoden zu verwenden, aber mit [[UIApplication sharedApplication] setStatusBarHidden:YES];
funktioniert alles wie gewünscht. Wenn jemand eine bessere Lösung hat, lass es mich wissen.
Dies ist die Swift-Version:
Um die Statusleiste auszublenden oder ihre Darstellung zu ändern, müssen Sie die folgenden Eigenschaften in Ihrem View Controller selbst überschreiben
override var prefersStatusBarHidden: Bool{
return true
}
das Obige verbirgt die Statusleiste und darunter, wenn Sie es auf Weiß setzen möchten:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Fügen Sie in Ihrer Plist-Datei die Eigenschaft View controller-based status bar appearance
Bool hinzu und setzen Sie sie auf YES.
Fügen Sie nun in Ihrem View Controller die folgenden Methoden hinzu:
// TO MAKE STATUS BAR WHITE
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// TO MAKE STATUS BAR BLACK
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// RETURN TRUE TO HIDE AND FALSE TO SHOW STATUS BAR
override func prefersStatusBarHidden() -> Bool {
return true
}
Für Ziel-C
- (BOOL)prefersStatusBarHidden {
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Um redundanten Code zu entfernen, können Sie eine BaseViewController
als Unterklasse von UIViewController
erstellen und die Methoden in dieser Klasse hinzufügen. Und überschreiben Sie die Methode in der Klasse, die geändert werden muss.
wenn Ihr Viewcontroller in UInavigationController eingebettet ist, schreiben Sie diesen Code in Ihr
-(BOOL)prefreStatusBarHidden
{
return [self.navigationController prefersStatusBarHidden];
}