Mijn applicatie heeft een donkere achtergrond, maar in iOS 7 is de statusbalk doorzichtig geworden. Dus ik kan'en daar niets zien, alleen de groene batterij-indicator in de hoek. Hoe kan ik de tekstkleur van de statusbalk veranderen in wit, zoals op het beginscherm?
Zet de UIViewControllerBasedStatusBarAppearance
op YES
in het .plist bestand.
In de viewDidLoad
doe je een [self setNeedsStatusBarAppearanceUpdate];
Voeg de volgende methode toe:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Noot: Dit werkt niet voor controllers binnen UINavigationController
, zie Tyson's commentaar hieronder :)
Swift 3 - Dit zal werken voor controllers binnen UINavigationController
. Voeg deze code toe in uw controller.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 en SwiftUI
Voor SwiftUI maak een nieuw swift bestand genaamd HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Wijzig dan de volgende regels code in SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
naar
window.rootViewController = HostingController(rootView: ContentView())
Dit is gedocumenteerd in de iOS 7 UI Transition Guide, waarvoor je een Apple ontwikkelaars-ID nodig hebt om direct toegang te krijgen. Het relevante uittreksel:
Omdat de statusbalk transparant is, is de weergave erachter doorzichtig. [...] Gebruik een
UIStatusBarStyle
constante om aan te geven of de inhoud van de statusbalk donker of licht moet zijn:
UIStatusBarStyleDefault
geeft donkere inhoud weer. [...]
UIStatusBarStyleLightContent
geeft lichte inhoud weer. Gebruik dit als er donkere inhoud achter de statusbalk staat.
Ook mogelijk van belang:
In iOS 7 kun je de stijl van de statusbalk regelen vanuit een individuele vew controller en deze wijzigen terwijl de app draait. Om te kiezen voor dit gedrag, voeg de
UIViewControllerBasedStatusBarAppearance
sleutel toe aan een app'sInfo.plist
bestand en geef het de waardeYES
.
Ik'zou zeker aanraden om het document eens door te nemen, waartoe je, nogmaals, toegang hebt met je Apple developer ID.
Dit lijkt een probleem te zijn met de huidige versie van Xcode en iOS 7.
Wat gerelateerde inhoud op Apple's Developer Forums is in een zoekopdracht naar UIStatusBarStyleLightContent in "iOS 7 Beta Livability" op de Apple Developer Forums* (momenteel 32 berichten).
Ik kwam het tegen toen ik het probeerde in te stellen op de lichte versie.
(Dit is slechts een vervolg op Aaron's antwoord).