webentwicklung-frage-antwort-db.com.de

Statusleiste in iOS7 kann nicht ausgeblendet werden

Ich habe gerade mein iPhone 5 iOS 7 auf die Betaversion 4 aktualisiert. Wenn ich meine App von Xcode 5 auf diesem iPhone aus starte, wird die Statusleiste nicht ausgeblendet, obwohl dies der Fall sein sollte.

Funktioniert nicht:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

Funktioniert nicht:

[UIApplication sharedApplication].statusBarHidden = YES;

Anmeldung in den Apple Entwicklerforen nicht möglich

267

fügen Sie in Ihrer App-Plist-Datei eine Zeile mit dem Namen "Controller-basierte Statusleiste anzeigen" hinzu und setzen Sie diese auf "NEIN"

Beachten Sie, dass dies einfach nicht funktioniert, wenn Sie UIImagePickerController in der App verwenden.

from http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , mgiroux's solution

An example adding View Base Controller to your Info settings in Xcode

557
satgi

Fügen Sie in Ihrem View Controller eine Methode hinzu.

- (BOOL)prefersStatusBarHidden {
    return YES;
}
277
invoodoo

Fügen Sie in der Liste die folgenden Eigenschaften hinzu.

-> Status bar is initially hidden = JA

-> View controller-based status bar appearance = NO

Add both - Jetzt verschwindet die Statusleiste.

84
user1179912

Um die Statusleiste in einer Einzelansicht auszublenden, sollten Sie Folgendes verwenden:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

Das hat bei mir zunächst nicht geklappt, und in der Dokumentation dieser Methode heißt es dann: // Das Setzen von statusBarHidden führt zu nichts, wenn Ihre Anwendung das standardmäßige UIViewController-basierte Statusleistensystem verwendet.

Dies muss in der plist-Datei durchgeführt werden, indem der Schlüssel View controller-based status bar appearance Auf NO gesetzt wird. Und dann hat es geklappt.

53
Debora Fortini

Um die Statusleiste in iOS7 auszublenden, benötigen Sie zwei Codezeilen

  1. nichtanwendung: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions schreiben

    [application setStatusBarHidden:YES];
    
  2. fügen Sie dies in info.plist hinzu

    View-Controller Based Status Bar Appearance = NO
    
16
Shaik Riyaz

Um die alte UIApplication-Methode zum Ausblenden/Anzeigen der Statusleiste zu verwenden, muss Ihre App einen Plist-Wert für iOS 7 festlegen:

View-Controller Based Status Bar Appearance = NO

Dieser Wert ist standardmäßig auf YES gesetzt. Wenn Sie den Wert in NO ändern, können Sie die alten Methoden verwenden. Wenn Sie die Einstellung auf YES belassen, können Sie die Statusleiste weiterhin ausblenden, aber es liegt an jeder View Controller-Unterklasse in Ihrer App, Folgendes zu überschreiben: prefersStatusBarHidden, um YES zurückzugeben.

Jedes Mal, wenn sich das Aussehen oder die Sichtbarkeit der Statusleiste Ihrer App ändern muss und das Aussehen der Ansichtssteuerungs-basierten Statusleiste auf JA gesetzt ist, muss Ihr äußerster Ansichtssteuerer Folgendes aufrufen:

setNeedsStatusBarAppearanceUpdateAnimation

16
jaredsinclair

Es werden so viele Kombinationen für dieses Problem vorgeschlagen, aber das Problem ist, dass iOS 6 und 7 unterschiedliche Methoden verwenden, um die Statusleiste auszublenden. Ich habe die Plist-Einstellungen noch nie erfolgreich festgelegt, um das Verhalten im iOS6-Stil unter iOS 7 zu aktivieren. Wenn Sie jedoch eine App erstellen, die iOS 6+ unterstützt, müssen Sie drei Methoden gleichzeitig verwenden, um sicherzustellen, dass ein bestimmter Ansichtscontroller den Status verbirgt Bar:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

Dies sollte unabhängig von Ihren Plist-Einstellungen funktionieren.

11
SaltyNuts

Ich musste beide Änderungen unten vornehmen, um die Statusleiste auszublenden:

Fügen Sie diesen Code dem Ansichtscontroller hinzu, in dem Sie die Statusleiste ausblenden möchten:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Fügen Sie dies zu Ihrer .plist-Datei hinzu (gehen Sie in den Anwendungseinstellungen zu "Info").

View controller-based status bar appearance --- NO

Dann können Sie diese Zeile aufrufen, um die Statusleiste auszublenden:

[[UIApplication sharedApplication] setStatusBarHidden:YES];
7
Peter Y

Fügen Sie einfach diese 2 Zeilen in die Datei info.plist ein. Es wird das Update für iOS7 und ältere Versionen machen.

  • Die Statusleiste ist zunächst ausgeblendet = JA
  • Anzeigen des Aussehens der controller-basierten Statusleiste = NEIN

Navigieren Sie zum Projekt und wählen Sie "Ziele" -> "Allgemein". Das Kontrollkästchen "Statusleistenstil ... während des Programmstarts ausblenden" wird aktiviert. Das wird funktionieren.

6
Sid

Versuchen Sie diese einfache Methode:

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

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
6

Das Einzige, was mir geholfen hat, ist, Folgendes in Ihre Liste aufzunehmen

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
4
bartburkhardt

Die einfachste Methode zum Ausblenden der Statusleiste in der gesamten App ist das Erstellen eines category für UIViewController und das Überschreiben von prefersStatusBarHidden. Auf diese Weise müssen Sie diese Methode nicht in jeden einzelnen View-Controller schreiben.

UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIViewController + HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end
4
mike
  1. In plist add ----

    Anzeigen des Aussehens der controller-basierten Statusleiste --- NEIN

  2. In jeden viewController schreiben

    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.Origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }
    

Für Statusleistenprobleme in iOS 7 sollte das Ziel jedoch 5.1 und höher für die App sein

3
user2823580

-(BOOL)prefersStatusBarHidden { return YES; }

3
Thunderbird

Schritte zum Ausblenden der Statusleiste in iOS 7:

1.Gehen Sie zu Ihrer Datei application info.plist.

2.Und Set, Controller-basierte Statusleiste anzeigen: Boolean NO

Hoffe, ich habe das Problem mit der Statusleiste behoben ...

3
chandrika

Für iOS 7 in einer einzelnen Ansicht verwenden Sie die viewWillappear-Methode:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

Zum Anzeigen der Statusleiste verwenden Sie:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
3
oscar castellon

In der Info Plist-Datei Fügen Sie eine Zeile für die folgende Eigenschaft hinzu

Eigenschaftsname: Anzeigen des Aussehens der controller-basierten Statusleiste

Wert: NEIN

2
user842553

Viele der Antworten in diesem Thread funktionieren, aber wenn Sie versuchen, etwas Dynamisches zu tun, müssen Sie irgendwann Folgendes aufrufen:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
2
darkheartfelt

Ich habe all diese Optionen in meinem Projekt ausprobiert und sie würden nicht funktionieren. Ich dachte, das könnte damit zu tun haben, dass ich mein Xcode und dann die App auf iOS 7 aktualisiert und einige Einstellungen irgendwo durcheinander gebracht habe. Ich beschloss, ein komplett neues Projekt dafür zu bauen und nach einfachem Einstellen: "Status bar is initially hidden = YES" und "View controller-based status bar appearance = NO "Wie von vielen anderen angegeben, hat es ordnungsgemäß funktioniert (d. h. keine Statusleiste).

Mein Rat, wenn Sie an einem Projekt arbeiten, das von einer alten Version auf iOS 7 aktualisiert wurde und alle anderen Optionen ausprobiert hat, ist, ein neues Projekt zu erstellen.

1
user1529408

Für 2019 ...

So erstellen Sie eine App ohne Statusleisten:

Klicken Sie auf info.plist, klicken Sie mit der rechten Maustaste auf "Zeile hinzufügen".

Fügen Sie diese beiden mit diesen Einstellungen hinzu:

enter image description here

Das ist alles dazu.

1
Fattie

Versuchen Sie, die folgende Methode zum Stammansichts-Controller Ihrer App hinzuzufügen:

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
1
Bhoopi

Sie können dies überprüfen Code , Pod IViewController + ODStatusBar

0
Alex Nazaroff

So blenden Sie die Statusleiste für einen bestimmten viewController aus

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Zum Einstellen der Statusleiste Für die Anwendung ausgeblendet:

  • einstellen View controller-based status bar appearancezu NO in .plist und in application: didFinishLaunchingWithOptions: einstellen: [application setStatusBarHidden:YES];

    Anmerkung: setStatusBarHidden: veraltet

OR

  • in den Projekteinstellungen -> Registerkarte Allgemein -> Bereitstellungsinformationen

    Prüfen Hide Status bar Box.

0
Lal Krishna

Für Swift 2.0+ IOS 9

override func prefersStatusBarHidden() -> Bool {
return true
}
0
Irshad Qureshi