web-dev-qa-db-ger.com

Die Statusleiste verschwindet nicht

Ich erstelle eine Anwendung und möchte, dass die Statusleiste ausgeblendet wird. Wenn ich die App teste, wird die Statusleiste ausgeblendet, während der Begrüßungsbildschirm angezeigt wird. Sobald die App jedoch vollständig geladen ist, wird die Statusleiste wieder angezeigt.

Ich verwende Xcode 5 und iOS 7 und habe versucht, die Statusleiste programmatisch zu deaktivieren

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

in der info.plist-Datei und unter Verwendung des Attribut-Inspektors für die .xib-Datei. Nichts scheint zu funktionieren. 

Irgendwelche Ideen?

110
user2397282

Fügen Sie dem Root-View-Controller Ihrer App die folgende Methode hinzu:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
220
Quentin

Sie sollten diesen Wert zu plist hinzufügen: " Controller-basierte Statusleiste anzeigen " und auf "NO" setzen.

Auf diese Weise können Sie die Statusleiste auf hidden mode setzen. Dies stellt es auf ein globales anders als andere bereitgestellte Antworten ein.

UPDATE: Wenn Sie möchten, dass die Statusleiste auf dem Begrüßungsbildschirm ausgeblendet wird, vergessen Sie nicht, " Beim Start der Anwendung ausblenden " in den Optionen der Zielstatusleiste zu markieren . Sie können auch "hinzufügen". Die Statusleiste ist anfangs ausgeblendet "bis"YES"in der Liste, wenn Sie keinen Code in der App verwenden möchten.

124
Idan

Der von Ihnen gepostete Code funktioniert für iOS 6.1 und darunter. Für iOS 7 stellt Apple neue Methoden zur Verfügung, mit denen die Statusleiste für jede Ansicht direkt gesteuert werden kann. Wenn Sie diese Option in Ihrer Info.plist deaktivieren, können Sie die Statusleiste zumindest für die aktuelle Developer Preview (4) ausblenden.

Add this and set to NO

Weitere Informationen finden Sie im iOS 7-Übergangshandbuch, das im Entwicklerportal von Apple verfügbar ist.

73
Sven

nun, ich versuche, die Statusleiste in all meiner App und in der "App" -info.plist auszublenden, und füge im Wörterbuch "Information Property List" zwei Zeilen hinzu. Ich füge hinzu: "Anzeigen von Controller-basierten Statusleisten", NEIN und in "". Statusleiste ist anfangs ausgeblendet "setze JA und für mich funktioniert n_n '

plist info

36

Wenn Sie jedoch UIImagePicker verwenden, wird die Statusleiste erneut angezeigt.

In diesem Fall sollten Sie die Statusleiste wie folgt ausblenden:

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
17
alones

Nach langem Suchen fand ich endlich eine sehr einfache Lösung, die sich auch mit dem UIImagePickerController-Problem befasst.

Setzen Sie, wie in den anderen Antworten erwähnt, Ihre Statusleiste in AppDelegate didFinishLaunching ausblenden, und legen Sie die Option "Controller-basierte Statusleiste anzeigen" auf NO fest.

Dann in Ihrer AppDelegate:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - Ihre Statusleiste bleibt auch dann verborgen, wenn der UIImagePickerController an vorderster Stelle steht.

Dies ist besser, als es jedes Mal, wenn Sie einen UIImagePickerController präsentieren, neu zu erstellen, da er in der App verborgen bleibt.

8
ikuramedia

Um die Statusleiste auf einem bestimmten UIViewController auszublenden, fügen Sie einfach Folgendes hinzu:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

Hoffe das hilft !

7
Mike Gledhill

Sie können in der Projektzusammenfassung ausblenden. Es gibt ein Kontrollkästchen, das beim Start ausgeblendet wird.

Sehen Sie den Schnappschuss

enter image description here

5

Ich habe diese Lösung für mich gefunden. Es funktioniert wie ein Zauber. Schreiben Sie diesen Code auf Ihren Viewcontroller, auf dem Sie UIImagePickerController verwenden wollten.

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }
4
xevser

Schnelle Lösung

fügen Sie dies einfach Ihren View-Controllern hinzu:

override func prefersStatusBarHidden() -> Bool {
    return true
}
3
Dan Beaulieu

Stellen Sie sicher, dass zusätzlich zur Antwort von alones oben die imagePickerControllerDidCancel-Methode implementiert ist, und fügen Sie dort denselben Code ein. 

3
Swindler

Ich hatte auch Probleme mit UIImagePicker. Ähnlich wie Alones Antwort war meine Lösung die folgende. Ich habe diese Zeile oder diesen Code hinzugefügt:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

zu dieser Funktion:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Ich habe dies nicht mit iOS 6 oder älter getestet, aber es funktioniert gut mit iOS 7.

2
Dev01

Mein Problem war, dass ich View Controller Containment verwendet habe. Nur der oberste View-Controller, der beispielsweise in einen Navigations-Controller eingebettet ist, kann die Statusleiste ein- oder ausblenden.

0
testing

Ich verwende Xcode 6, diese Lösung funktioniert für mich unter iOS 7 und 8:

Setzen Sie zunächst die Option "Controller-basierte Statusleiste anzeigen" in plist-Datei auf NO.

Fügen Sie anschließend in AppDelegate Folgendes hinzu:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
0
RRN