So ändern Sie die Textfarbe der Statusleiste in iOS

Meine Anwendung hat einen dunklen Hintergrund, aber in iOS 7 die Statusleiste wurde transparent. Ich kann also nichts mehr sehen, nur noch die grüne Batterieanzeige in der Ecke. Wie kann ich die Textfarbe der Statusleiste auf weiß ändern, wie sie auf dem Startbildschirm ist?

Lösung
  1. Setzen Sie die Option "UIViewControllerBasedStatusBarAppearance" in der .plist-Datei auf "JA".

  2. In der viewDidLoad ein [self setNeedsStatusBarAppearanceUpdate]; durchführen.

  3. Fügen Sie die folgende Methode hinzu:

     - (UIStatusBarStyle)preferredStatusBarStyle
     {
         return UIStatusBarStyleLightContent;
     }

Hinweis: Dies funktioniert nicht bei Controllern innerhalb von UINavigationController, siehe [Tysons Kommentar unten] (https://stackoverflow.com/questions/17678881/how-to-change-status-bar-text-color-in-ios-7#comment28947732_17768797) :)

Swift 3 - Dies funktioniert mit Controllern innerhalb von UINavigationController. Fügen Sie diesen Code in Ihren Controller ein.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 und SwiftUI

Für SwiftUI erstellen Sie eine neue Swift-Datei mit dem Namen HostingController.swift.

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Dann ändern Sie die folgenden Codezeilen in der Datei SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

in

window.rootViewController = HostingController(rootView: ContentView())
Kommentare (18)

Dies ist in der iOS 7 UI Transition Guide dokumentiert, auf die Sie mit einer Apple-Entwickler-ID direkt zugreifen können. Der relevante Auszug:

Da die Statusleiste transparent ist, scheint die Ansicht dahinter durch. [...] Verwenden Sie eine UIStatusBarStyle-Konstante, um anzugeben, ob der Inhalt der Statusleiste dunkel oder hell sein soll:

UIStatusBarStyleDefault zeigt dunklen Inhalt an. [...]

UIStatusBarStyleLightContent zeigt hellen Inhalt an. Wird verwendet, wenn sich dunkle Inhalte hinter der Statusleiste befinden.

Möglicherweise auch von Interesse:

In iOS 7 können Sie den Stil der Statusleiste von einem individuellen View-Controller aus steuern und ihn ändern, während die App läuft. Um sich für dieses Verhalten zu entscheiden, fügen Sie den Schlüssel "UIViewControllerBasedStatusBarAppearance" zur Datei "Info.plist" einer App hinzu und geben Sie ihm den Wert "YES".

Ich würde auf jeden Fall empfehlen, einen Blick in das Dokument zu werfen, auf das Sie wiederum mit Ihrer Apple-Entwickler-ID zugreifen können.

Kommentare (3)

Dies scheint ein Problem mit dem aktuellen Build von Xcode und iOS 7 zu sein.

Einige verwandte Inhalte in den Apple-Entwicklerforen finden Sie unter Suche nach UIStatusBarStyleLightContent in "iOS 7 Beta Livability" in den Apple-Entwicklerforen* (derzeit 32 Beiträge).

Ich bin darauf gestoßen, als ich versuchte, die Light-Version einzustellen.

(Dies ist nur eine Fortsetzung von Aarons Antwort.)

Kommentare (0)