Hoe de tekstkleur van de statusbalk te veranderen in iOS

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?

Oplossing
  1. Zet de UIViewControllerBasedStatusBarAppearance op YES in het .plist bestand.

  2. In de viewDidLoad doe je een [self setNeedsStatusBarAppearanceUpdate];

  3. 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 {
    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())
Commentaren (18)

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's Info.plist bestand en geef het de waarde YES.

Ik'zou zeker aanraden om het document eens door te nemen, waartoe je, nogmaals, toegang hebt met je Apple developer ID.

Commentaren (3)

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).

Commentaren (0)