1088 Stimmen

Wie ändere ich die Textfarbe der Statusleiste in iOS

Meine Anwendung hat einen dunklen Hintergrund, aber in iOS 7 wurde die Statusleiste transparent. So kann ich dort nichts sehen, nur den grünen Batterieindikator in der Ecke. Wie kann ich die Textfarbe der Statusleiste ändern, damit sie weiß ist wie auf dem Startbildschirm?

1472voto

Peter B. Kramer Punkte 16061
  1. Setze UIViewControllerBasedStatusBarAppearance in der .plist-Datei auf YES.

  2. Füge in viewDidLoad [self setNeedsStatusBarAppearanceUpdate]; hinzu.

  3. Füge die folgende Methode hinzu:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

Hinweis: Dies funktioniert nicht für Controller innerhalb von UINavigationController, siehe Tysons Kommentar unten :)

Swift 3 - Dies funktioniert für Controller innerhalb von UINavigationController. Füge diesen Code in deinen Controller ein.

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

Swift 5 und SwiftUI

Erstelle für SwiftUI eine neue Swift-Datei namens HostingController.swift

import Foundation
import UIKit
import SwiftUI

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

Ändere dann die folgenden Zeilen in der SceneDelegate.swift

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

zu

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

869voto

wilsontgh Punkte 9582

Alternativ können Sie sich auch für die statusleistenbasierte Ansicht entscheiden:

  1. Legen Sie View controller-based status bar appearance in Ihrer Info.plist auf NO fest.
  2. Rufen Sie [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; auf

Hinweis: Diese Methode wurde in iOS9 veraltet. Verwenden Sie stattdessen preferredStatusBarStyle auf dem UIViewController. (siehe Apple Developer Library)

457voto

Lucas Punkte 6597

Dies können Sie ohne das Schreiben einer einzigen Zeile Code tun!
Folgendes tun, um die Textfarbe der Statusleiste über die gesamte App hinweg weiß zu machen

Auf Ihrer Projekt-Plist-Datei:

  • Statusleistenstil: Transparenter schwarzer Stil (Alpha von 0,5)
  • Statusleisten-Aussehen basierend auf View-Controllern: NEIN
  • Statusleiste ist anfangs ausgeblendet: NEIN

252voto

Pradeep Mahdevu Punkte 7545

Hinweis: Die am meisten hochgewertete Antwort funktioniert nicht für iOS 7 / 8

In Info.plist setzen Sie 'View controller-based status bar appearance' auf NEIN

In AppDelegate hinzufügen

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

zu

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ...
}    

Diese Lösung funktioniert für iOS 7 / 8.

124voto

haraldmartin Punkte 1532

Für mich hat nichts funktioniert, als ich alle Dinge in den anderen Antworten (und aus anderen Quellen/Dokumentationen) verwendet habe. Was geholfen hat, war den Navigationsleistenstil im XIB auf "Schwarz" zu setzen. Dadurch wurde der Text ohne jeglichen Code weiß geändert.

Geben Sie hier eine Bildbeschreibung ein

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X