Ich möchte die Statusleiste oben auf dem Bildschirm entfernen.
Das funktioniert nicht:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Ich habe auch versucht:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Antworten:
Sie sollten prefersStatusBarHidden wirklich auf Ihren View Controllern implementieren:
Swift 3 und höher
quelle
Fügen Sie den Code innerhalb der Methode hinzu
GETAN! Führen Sie Ihre App und keine Statusleiste mehr aus!
quelle
Swift 3
Im
Info.plist
SetView controller-based status bar appearance
aufNO
Und Ruf an
UIApplication.shared.isStatusBarHidden = true
quelle
Wenn Sie die Statusleiste beim Tippen auf eine Schaltfläche ausblenden und wieder aufrufen möchten , während Sie zum Ein- und Ausschalten des Einblendmenüs , von Popups usw. die folgende Methode verwenden: -
So blenden Sie die Statusleiste aus: -
So rufen Sie die Statusleiste wieder auf:
quelle
prefersStatusBarHidden
Eigenschaft wie bereits erwähnt zu überschreiben .prefersStatusBarHidden
ist, dass Ansichten, die mithilfe von Einschränkungen an die Statusleiste gebunden sind, sowie Navigationsleisten sich schlecht bewegen, wenn Sie die Statusleiste mit ein- oder ausschaltenprefersStatusBarHidden
. Im Moment scheint nur diese Antwort das zu umgehen.prefersStatusBarHidden
Ihre Einschränkung durcheinander bringen. Soweit macht das die Arbeit. Ich benutze jedoch einen kleinen Wrapper, um die Verwendung von Singletons zu vermeiden. Sie finden ihn hierWenn Sie einen visuellen Ansatz bevorzugen, anstatt ihn zu codieren, verwenden Sie diese Methode: in Ihrem
info.plist
fügen Sie einfach
View controller-based status bar appearance
aufNO
und
Status bar is initially hidden
alsYES
quelle
quelle
Update für iOS 10 / Swift 3.0
Keine Funktion mehr, jetzt eine Eigenschaft ...
quelle
get { }
wenn Sie kein habenset
, schreiben Sie einfachreturn true
in Swift 3.x:
quelle
Gehen Sie zu Ihrer Info.plist und fügen Sie zwei Schlüssel hinzu:
quelle
Das Problem hier hat also eigentlich nichts mit Swift zu tun, sondern nur damit, wie das Erscheinungsbild der Statusleiste ab iOS 7 behandelt wird.
Standardmäßig steuern Ansichtssteuerungen das Erscheinungsbild der Statusleiste individuell, wenn sie auf dem Bildschirm angezeigt werden. Wenn Sie diese Methode zur Steuerung der Statusleiste verwenden möchten, können Sie die folgenden Methoden für alle Ansichtssteuerungen überschreiben, für die Sie das Erscheinungsbild ändern möchten:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,In Ihrem Fall würden Sie nur implementieren
prefersStatusBarHidden
und zurückkehrentrue
.Die andere Möglichkeit besteht darin, das Erscheinungsbild der Statusleiste auf Anwendungsebene zu steuern. Dies scheint das zu sein, was Sie tatsächlich versuchen (durch Einstellen
application.statusBarHidden
).Damit dies funktioniert, müssen Sie die
Info.plist
Datei Ihrer App öffnen , den Schlüssel hinzufügenUIViewControllerBasedStatusBarAppearance
und einen Wert von angebenNO
.quelle
Ich habe das tatsächlich selbst herausgefunden. Ich werde meine Lösung als weitere Option hinzufügen.
quelle
Okay, dies wird zu einem Problem für mich, da iOS 9 keine der oben genannten Methoden wie
UIApplication.sharedApplication().statusBarHidden = true
oder unterstütztund
funktioniert, bietet aber keine programmierbare Lösung, bei der ich unter bestimmten Bedingungen Änderungen vornehmen kann. (
statusBarHidden = true
undstatusBarHidden = false
wie wir es vorher getan haben).Lösung für diesen Wahnsinn:
Durch Hinzufügen zu " Gefällt
prefersStatusBarHidden()
mir" unten könnenUIViewControllerBasedStatusBarAppearance
Sie das Ausblenden und Anzeigen der Statusleiste programmgesteuert steuern, ohne Ihrer info.plist Einstellungen hinzuzufügen :Verwenden Sie es dann im gesamten Code folgendermaßen:
ODER
quelle
prefersStatusBarHidden
Anruf sinnvoll? Ich denke du meinstself.setNeedsStatusBarAppearanceUpdate()
nachshowStatusBar
ZuweisungNur um hinzuzufügen, wenn die
prefersStatusBarHidden
Methode oder VariableView controller-based status bar appearance
überschrieben wird, muss die in Info.plist YES sein, sonst hat die Überschreibung keine Auswirkungquelle
in Swift 4.2 ist es jetzt eine Eigenschaft.
quelle
In meinem Fall suchte ich nach der Statusleiste, um sie bei Bedarf auszublenden / anzuzeigen. anstatt nur, wenn die Ansicht geladen wird oder verschwindet.
schnell 3.x.
quelle
Swift 5: Im Hauptansichts-Controller oder im Hauptnavigations-Controller, falls vorhanden,
Und "Controller-basiertes Statusleisten-Erscheinungsbild anzeigen" in plist muss JA sein, sonst wird der obige Code nicht aufgerufen.
Wenn Sie die Statusleiste beim Starten der App ausblenden möchten, muss "Statusleiste ist anfangs ausgeblendet" in plist JA sein. Dies kann verhindern, dass das Startbild verzerrt wird, wenn ein zusätzlicher blauer Balken oben auf dem Bildschirm angezeigt wird.
quelle
Eine Lösung, die für mich funktioniert; Wenn Sie die Statusleiste während des Ladens auf einem bestimmten Ansichts-Controller ausblenden möchten:
Achtung: Wenn Sie in Ihrer info.plist den Schlüssel "Erscheinungsbild der Controller-basierten Statusleiste anzeigen " auf " NEIN " setzen, funktioniert der obige Code nicht. Sie sollten den Schlüssel auf " JA " setzen oder ihn aus info.plist entfernen
quelle
Aktivieren Sie in Ihrem Projekt Allgemein-> Bereitstellungsinfo-> Statusleistenstil das Häkchen der Statusleiste ausblenden. Hinweis: - Die Statusleiste wird in der gesamten Anwendung ausgeblendet
quelle
Versuchen Sie für Swift 4+ den folgenden Code (getestet unter Swift 4.0, 4.1 - IOS 10, 11):
quelle
Swift 5+
In meinem Fall muss ich die ausgeblendete Statusleiste unter bestimmten Bedingungen aktualisieren.
Aus diesem Grund erstelle ich einen Basis-Controller,
BaseViewController
der neue Eigenschaften enthälthideStatusBar
.Andere Ansichtssteuerungen sind Unterklassen dieser Basissteuerung. Wenn ich das Verhalten der Statusleiste aktualisieren möchte, muss ich nur diesen
hideStatusBar
Wert ändern .Wie benutzt man
Demo
Hier ist eine Demo, mit
UIView.animate(...)
der ich den Übergang reibungsloser gestalten kann.quelle
Ich verwende Xcode 8.1 (8B62) mit einem Bereitstellungsziel von 10.1 und hatte mit den oben genannten Überschreibungsoptionen nicht viel Glück. Das Aktivieren der Option "Statusleiste ausblenden" in den Bereitstellungsinformationen hat mir jedoch geholfen.
Projekt> Allgemein
Ich hoffe das hilft.
quelle
Wenn Sie den View Controller modal präsentieren, versuchen Sie es
quelle
quelle
Sie können diesen Code in Ihrem verwenden
ViewController
Class
scope
quelle
In Ihrem Projekt-> Allgemein-> Bereitstellungsinformationen
Statusleistenstil: -
gerade markiert Statusleiste ausblenden (iOS 10)
quelle
Swift 4
quelle
Aktualisiert für iOS 13 und Swift 5
Wenn keine der oben genannten Antworten für Sie funktioniert. Überprüfen Sie Ihre Liste, um festzustellen, ob Sie Folgendes haben:
"Controller-basiertes Erscheinungsbild der Statusleiste anzeigen"
Wenn ja, stellen Sie es auf JA !!!!!
Dann funktioniert der folgende Code.
quelle