2017-01-16 2 views
5

Ich möchte weiße Statusleiste in meiner App. Hierzu setze ich View controller-based status bar appearance auf NO und Status bar style auf UIStatusBarStyleLightContent. Aber jetzt muss ich die Statusleiste in einigen View-Controllern ausblenden. Um es zu verstecken, muss ich View controller-based status bar appearance auf YES setzen und - (BOOL)prefersStatusBarHidden {return YES;} hinzufügen. Aber die Statusleiste ist jetzt schwarz. Es ist schwarz, wenn View controller-based status bar appearanceYES ist und weiß, wenn NO. Die Frage ist also, wie man die weiße Statusleiste einstellt und versteckt?Xcode Hide weiß Statusleiste IOS 10

UPD: Code in VC, die ich weiß Statusleiste (prefferdSTatusBarStyle nicht genannt)

enter image description here

Code in VC mit versteckter Statusleiste

enter image description here

.plist haben will Einstellungen

Ergebnis ist schwarz Statusleiste, die

UPD2 in einigem VC versteckt:

Ich weiß, dass es schlecht ist veraltete Methoden zu bedienen, aber mit [[UIApplication sharedApplication] setStatusBarHidden:YES]; alles funktioniert, wie ich will. Wenn jemand eine bessere Lösung hat, lass es mich wissen.

+0

müssen Sie "UIStatusBarStyleLightContent" in jedem Viewcontroller Ihres Projekts anzeigen? – Birendra

+0

Ja. Alle View-Controller sollten eine weiße Statusleiste haben – Ossir

+0

Haben Sie die Lösung gefunden? – OXXY

Antwort

0

Sie Xcode Statusleiste Stil verwendet, ist „light“

enter image description here

+0

es ist bereits zu hell, aber das Ergebnis ist das gleiche – Ossir

+0

Sie haben Änderungen in der Datei info.plist für die Statusleiste? – Birendra

+0

Nur 'View controller-based status bar appearance' wird auf' YES' und 'Status bar style' auf' UIStatusBarStyleLightContent' gesetzt. aber Statusleiste ist jetzt schwarz – Ossir

0

wenn Ihr Viewcontroller in UINavigationController eingebettet wird dann versuchen, diesen Code zu schreiben in Ihrem

-(BOOL)prefreStatusBarHidden 
{ 
     return [self.navigationController prefersStatusBarHidden]; 
} 
3

Dies ist die schnelle Version:

die Statusleiste auszublenden oder es ist Aussehen zu verändern, müssen Sie das außer Kraft setzen folgende Eigenschaften im view-Controller selbst

override var prefersStatusBarHidden: Bool{ 
     return true 
} 

die oben versteckt die Statusleiste und unten, wenn Sie es auf weiß festlegen möchten:

override var preferredStatusBarStyle: UIStatusBarStyle { 
     return .lightContent 
} 
-1

Sie können dies tun, indem Sie die Navigationshintergrundbild in Ihrer Basis Viewcontroller einstellen.

UIImage *bgImage = [UIImage imageNamed:@"bg_navigationbar"]; 
[self.navigationController.navigationBar setBackgroundImage:bgImage forBarMetrics:UIBarMetricsDefault]; 
+0

Das ist einfach falsch. Sollte entfernt werden. –

2

In Ihrer plist Datei View controller-based status bar appearance Bool Eigenschaft hinzufügen und auf YES gesetzt.

Jetzt in Ihrem View-Controller hinzufügen, die Methoden wie unten:

// 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 Objective-C

- (BOOL)prefersStatusBarHidden { 
    return NO; 
} 

-(UIStatusBarStyle)preferredStatusBarStyle { 
    return UIStatusBarStyleLightContent; 
} 

zur redundanten Code zu entfernen Sie eine BaseViewController als Unterklasse von UIViewController machen und fügen Sie die Methoden in dieser Klasse. Und überschreiben Sie die Methode in der Klasse, die geändert werden muss.

+0

weiß nicht, was falsch ist, aber wenn ich dies tue, habe ich schwarze Statusleiste und 'preferredStatusBarStyle' nicht aufgerufen. 'prefersStatusBarHidden' funktioniert – Ossir

+0

@Ossir Haben Sie das Bool in plist auf YES gesetzt? –

+0

ja. 'prefersStatusBarHidden' funktioniert und' preferredStatusBarStyle' nein – Ossir

Verwandte Themen