Ich habe versucht
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Das macht nichts.
Und ich habe in meiner Info.plist
Datei nach "Aussehen der Controller-basierten Statusleiste anzeigen" gesucht, aber sie ist nicht vorhanden.
Wie kann ich die weiße Statusleiste oben auf dem Bildschirm (mit Uhr und Akkuladung) in meiner App für Xcode 6 ausblenden? Vielen Dank!
objective-c
ios8
statusbar
Aggressor
quelle
quelle
Antworten:
Sie müssen diese Methode auf jedem View Controller überschreiben, es sei denn, Sie haben diesen Plist-Eintrag.
Ziel c
-(BOOL)prefersStatusBarHidden{ return YES; }
Swift 2
override func prefersStatusBarHidden() -> Bool { return true }
Swift 3+
override var prefersStatusBarHidden: Bool { return true }
Und vergessen Sie nicht festzulegen (wenn Sie einen View-Controller durch Aufrufen der Methode presentViewController präsentieren: animiert: Vervollständigung: Methode):
Ziel c
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;
Schnell
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true
Dokumentation: https://developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb
Wenn Sie die Statusleiste in einem Container-View-Controller ändern (z. B.
UINavigationController
oderUIViewController
mit untergeordneten View-Controllern) und den für die Statusleiste verantwortlichen View-Controller ändern möchten, sollten Sie diechildViewControllerForStatusBarHidden:
Eigenschaft verwenden. Z.B:Legen Sie die First View Controller-Instanz fest, die immer für die Verwaltung der Statusleiste verantwortlich ist
Ziel c
- (UIViewController *)childViewControllerForStatusBarHidden { return childViewControllers.first; // or viewControllers.first }
Swift 2
override var childViewControllerForStatusBarHidden() -> UIViewController? { return childViewControllers.first // or viewControllers.first }
Swift 3+
override var childViewControllerForStatusBarHidden: UIViewController? { return childViewControllers.first // or viewControllers.first }
Legen Sie den Container View Controller fest, der für die Verwaltung der Statusleiste verantwortlich ist
Ziel c
- (UIViewController *)childViewControllerForStatusBarHidden { return nil; }
Swift 2
override func childViewControllerForStatusBarHidden() -> UIViewController? { return nil }
Swift 3+
override var childViewControllerForStatusBarHidden: UIViewController? { return nil }
Dokumentation: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh
quelle
setNeedsStatusBarAppearanceUpdate
wenn Sie es zwingen müssen, den aktuellen Viewcontroller zu einer beliebigen Zeit zu aktualisierenFür Ziel-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [application setStatusBarHidden:YES]; return YES; }
Für Swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool { application.statusBarHidden = true return true }
Erledigt! Führen Sie Ihre App und keine Statusleiste mehr aus!
quelle
Sie können die Statusleiste ausblenden, ohne eine einzige Codezeile zu schreiben. Es sind lediglich zwei Einträge in die info.plist erforderlich. Die erste ist
"Aussehen der Controller-basierten Statusleiste anzeigen" auf NO gesetzt
der zweite ist
"Statusleiste ist anfangs ausgeblendet" auf JA gesetzt
quelle
Sie können diese Zeile zu Ihrer Info.plist-Datei hinzufügen, wenn sie nicht vorhanden ist. Gehen Sie einfach in Xcode zum Projekt, gehen Sie zum Abschnitt "Info" und bewegen Sie den Mauszeiger über eine der vorhandenen Zeilen. Es sollte eine "+" - Schaltfläche angezeigt werden, mit der Sie eine Zeile hinzufügen und "Controller-basiertes Statusleisten-Erscheinungsbild anzeigen" eingeben können.
quelle
Für iOS 10 mit Swift 3 sollten Sie Folgendes verwenden:
override var prefersStatusBarHidden: Bool { get { return true } }
quelle
Keine Notwendigkeit, eine Codezeile zu schreiben ... Prost
quelle
Wenn Sie UIDocumentInteractionController verwenden, um Daten anzuzeigen, wird die Statusleiste nie ausgeblendet, sodass ich eine Alternative dazu habe
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Diese Zeile ändert die Farbe des Inhalts der Statusleiste in Weiß
quelle