Ändern der Textfarbe der Statusleiste im Begrüßungsbildschirm iOS 7

98

Ich weiß, dass es bereits einige Fragen zum Stapelüberlauf gibt , die besagen, wie die Statusleiste für alle Ansichtssteuerungen geändert werden kann. Ich ändere derzeit die Farbe der Statusleiste folgendermaßen:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

In dem application:DidFinishLaunching

Zusätzlich habe ich den Wert von UIViewControllerBasedStatusBarAppearancein der Liste in geändert NO. Auf dem Begrüßungsbildschirm wird jedoch der Text der Statusleiste mit der schwarzen Farbe angezeigt.

Ist es möglich, die Farbe der Textfarbe der Statusleiste im Begrüßungsbildschirm zu ändern ?

Tiago Almeida
quelle
Was meinst du mit "Es wird immer noch die Statusleiste mit der schwarzen Farbe angezeigt": Wenn Ihr Code funktioniert, sollte die Schriftart der Statusleiste weiß sein und die Hintergrundfarbe der Statusleiste von Ihrem Begrüßungsbild abhängen (das jetzt die Höhe der Statusleiste - 20 Pixel) enthalten sollte.
Vinzzz
Entschuldigung, ich habe das Textwort wirklich vermisst. Ich ändere nur die Textfarbe der Statusleiste. Ich kann es ändern, nachdem der Begrüßungsbildschirm angezeigt wird, aber ich kann es nicht ändern, wenn der Begrüßungsbildschirm angezeigt wird.
Tiago Almeida

Antworten:

224

Fügen Sie in der Projektplist-Datei die Eigenschaft "Statusleistenstil" hinzu (Schlüssel ist UIStatusBarStyle). Ignorieren Sie dann alle möglichen Werte, die in der Dropdown-Liste für diese Eigenschaft aufgeführt sind, und geben Sie UIStatusBarStyleLightContentstattdessen ein.

Und Sie müssen nicht in Ihrer Liste festlegen UIViewControllerBasedStatusBarAppearance, sondern NOkönnen die preferredStatusBarStylegewünschten Einstellungen für Ihre View-Controller vornehmen.

Vinzzz
quelle
Gibt es eine Möglichkeit, dies mit einer getönten Statusleiste unter iOS 6 kompatibel zu machen?
Rafael Nobre
1
Die Textfarbe der Statusleiste ist entweder weiß oder schwarz. Der Hintergrund der Leiste stammt aus Ihrem Startbild und dann aus der Ansicht Ihres viewControllers, wenn er sich unter die Leisten erstreckt.
Vinzzz
1
Nach Tonnen verschiedener Methoden funktionierte diese ENDLICH (wobei UIViewControllerBasedStatusBarAppearance auf NO gesetzt war). Du bist ein Held.
Tamás Sengel
Sie können dies auch über den Code UIApplication.sharedApplication () tun. statusBarStyle = .LightContent. Ich mache es in AppDelegate
Yasmin Tiomkin
@ Yasmin: Um die Farbe nach dem Begrüßungsbildschirm zu ändern, war diese Lösung bereits Teil der Frage;)
Vinzzz
33

Sie können dies tun, ohne eine Codezeile zu schreiben. Führen
Sie die folgenden Schritte aus, um den Text der Statusleiste in der gesamten App weiß zu machen

Auf Ihrer Projekt-Plist- Datei:

  • Stil der Statusleiste: UIStatusBarStyleLightContent
  • Anzeigen der Controller-basierten Statusleiste: NO
  • Die Statusleiste ist zunächst ausgeblendet: NO
Lucas
quelle
Die akzeptierte Antwort ist gut, aber es hat nicht auf allen meinen View-Controllern funktioniert, ohne den zweiten Punkt oben ausgeführt zu haben. Vielen Dank!
Clifton Labrum
"Controller-basierte Statusleiste YES
anzeigen
19

Sie können die folgenden Schritte ausführen, um die Statusleiste für helle Farben in der gesamten Anwendung abzurufen.

  1. Wählen Sie im Projektnavigator den Namen des Projekts aus.
  2. Wählen Sie den Namen eines Ziels aus der Liste in der linken Spalte des Projekteditors.
  3. Klicken Sie oben im Projekteditor auf Allgemein.
  4. Statusleistenstil einstellen -> Licht

Fügen Sie in Ihre plist-Datei die folgenden Werte ein:

  1. Statusleistenstil - UIStatusBarStyleLightContent
  2. Anzeigen der Controller-basierten Statusleiste - NEIN

Auf diese Weise erhalten Sie die Statusleiste in der gesamten Anwendung in WEISS, einschließlich SPLASH SCREEN.

Anooj VM
quelle
7

Stellen Sie das UIViewControllerBasedStatusBarAppearancein der Liste auf Nein

Fügen Sie dann den folgenden Code in die Option zum Beenden des Starts ein

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Bitte folgen Sie diesem Code, der bei mir funktioniert hat

Preejith Augustine
quelle
Dies zeigt weißen Text in der Statusleiste, während mein Hintergrund ebenfalls hell ist. Wie kann ich schwarzen Text zeigen
Mangesh
Mangesh auf dem Ziel gehen Sie zu den allgemeinen Einstellungen dort haben Sie eine Option, um den Statusleistenstil
festzulegen
Sie könnten diese erste Zeile tatsächlich etwas einfacher mit der Punktsyntax schreiben, wie folgt: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman
2

Hier finden Sie Apple-Richtlinien / Anweisungen zum Ändern der Statusleiste.

Hier ist - So ändern Sie den Stil der Statusleiste:

Wenn Sie Set - Statusleiste Stil wollen, Anwendungsebene dann eingestellt , UIViewControllerBasedStatusBarAppearanceum NOin Ihrer `.plist‘ Datei.

Wenn Sie den Statusleistenstil auf View Controller-Ebene festlegen möchten, gehen Sie folgendermaßen vor:

  1. Setzen Sie das UIViewControllerBasedStatusBarAppearancein YESin der .plistDatei, wenn Sie den Statusleistenstil nur auf UIViewController-Ebene festlegen müssen.
  2. In der viewDidLoad Add-Funktion - setNeedsStatusBarAppearanceUpdate

  3. Überschreiben Sie den bevorzugten StatusBarStyle in Ihrem Ansichts-Controller.

- -

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Stellen Sie den Wert von .plist entsprechend der Setup-Ebene des Statusleistenstils ein. Geben Sie hier die Bildbeschreibung ein


Sie können die Hintergrundfarbe für die Statusleiste während des Anwendungsstarts oder während viewDidLoad Ihres View Controllers festlegen.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Hier ist das Ergebnis:

Geben Sie hier die Bildbeschreibung ein

Krunal
quelle
1

Sie können die folgenden Schritte ausführen, um die Statusleiste für helle Farben in der gesamten Anwendung abzurufen.

Wählen Sie im Projektnavigator den Namen des Projekts aus. Wählen Sie den Namen eines Ziels aus der Liste in der linken Spalte des Projekteditors. Klicken Sie oben im Projekteditor auf Allgemein. Statusleistenstil einstellen -> Licht

Usman Nisar
quelle