Sådan ændrer du tekstfarven på statuslinjen i iOS

Min applikation har en mørk baggrund, men i iOS 7 blev statuslinjen gennemsigtig. Så jeg kan ikke se noget der, kun den grønne batteriindikator i hjørnet. Hvordan kan jeg ændre tekstfarven på statuslinjen til hvid, som den er på startskærmen?

Løsning
  1. Indstil UIViewControllerBasedStatusBarAppearance til YES i .plist-filen.

  2. I viewDidLoad lav en [self setNeedsStatusBarAppearanceUpdate];

  3. Tilføj følgende metode:

     - (UIStatusBarStyle)preferredStatusBarStyle
     {
         return UIStatusBarStyleLightContent;
     }

Note: Dette virker ikke for controllere inden for UINavigationController, se venligst Tyson's kommentar nedenfor :)

Swift 3 - Dette vil fungere controllere inden for UINavigationController. Tilføj denne kode inde i din controller.

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

Swift 5 og SwiftUI

For SwiftUI opretter du en ny swift-fil kaldet HostingController.swift.

import Foundation
import UIKit
import SwiftUI

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

Ændr derefter følgende kodelinjer i SceneDelegate.swift

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

til

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

Dette er dokumenteret i iOS 7 UI Transition Guide, som du skal have et Apple Developer ID for at få direkte adgang til. Det relevante uddrag:

Fordi statuslinjen er gennemsigtig, vises visningen bag den igennem. [...] Brug en konstant UIStatusBarStyle til at angive, om statusbjælkens indhold skal være mørkt eller lyst:

UIStatusBarStyleDefault viser mørkt indhold. [...]

UIStatusBarStyleLightContent viser lyst indhold. Anvendes, når der er mørkt indhold bag statuslinjen.

Er muligvis også af interesse:

I iOS 7 kan du styre statusbjælkens stil fra en individuel vew-controller og ændre den, mens appen kører. Hvis du vil vælge denne adfærd, skal du tilføje nøglen UIViewControllerBasedStatusBarAppearance til en app's Info.plist-fil og give den værdien YES.

Jeg vil helt klart anbefale at kigge dokumentet igennem, som du igen kan få adgang til med dit Apple-udvikler-ID.

Kommentarer (3)

Det ser ud til at være et problem med den aktuelle version af Xcode og iOS 7.

Der er noget relateret indhold på Apples udviklerfora i en søgning på UIStatusBarStyleLightContent i "iOS 7 Beta Livability" på Apple Developer Forums* (i øjeblikket 32 indlæg).

Jeg stødte på det ved at forsøge at indstille det til den lyse version.

(Dette er blot en opfølgning på Aaron's svar.)

Kommentarer (0)