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?
Antworten
Zu viele Anzeigen?-
Setze
UIViewControllerBasedStatusBarAppearance
in der .plist-Datei aufYES
. -
Füge in
viewDidLoad
[self setNeedsStatusBarAppearanceUpdate];
hinzu. -
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())
Alternativ können Sie sich auch für die statusleistenbasierte Ansicht entscheiden:
- Legen Sie
View controller-based status bar appearance
in IhrerInfo.plist
aufNO
fest. - 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)
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
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.
- See previous answers
- Weitere Antworten anzeigen