La mia applicazione ha uno sfondo scuro, ma in iOS 7 la barra di stato è diventata trasparente. Quindi non posso vedere nulla, solo l'indicatore verde della batteria nell'angolo. Come posso cambiare il colore del testo della barra di stato in bianco come nella schermata iniziale?
Impostare la UIViewControllerBasedStatusBarAppearance
a YES
nel file .plist.
Nella viewDidLoad
fate un [self setNeedsStatusBarAppearanceUpdate];
Aggiungete il seguente metodo:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Nota: Questo non funziona per i controller all'interno di UINavigationController
, si prega di vedere Tyson's comment below :)
Swift 3 - Questo funzionerà controllori all'interno di UINavigationController
. Aggiungi questo codice all'interno del tuo controller.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 e SwiftUI
Per SwiftUI creare un nuovo file swift chiamato `HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Poi cambiate le seguenti linee di codice nel file `SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
a
window.rootViewController = HostingController(rootView: ContentView())
Questo è documentato nella iOS 7 UI Transition Guide, che è necessario un ID sviluppatore Apple per accedere direttamente. L'estratto rilevante:
Poiché la barra di stato è trasparente, la vista dietro di essa si mostra attraverso. [...] Usate una costante UIStatusBarStyle
per specificare se il contenuto della statusbar deve essere scuro o chiaro:
UIStatusBarStyleDefault
visualizza il contenuto scuro. [...]
UIStatusBarStyleLightContent
visualizza il contenuto chiaro. Usare quando il contenuto scuro è dietro la barra di stato.
Può anche essere interessante:
In iOS 7, è possibile controllare lo stile della barra di stato da un singolo controller vew e cambiarlo mentre l'app viene eseguita. Per scegliere questo comportamento, aggiungete la chiave
UIViewControllerBasedStatusBarAppearance
al fileInfo.plist
di un'app e datele il valoreYES
.
Consiglio vivamente di dare un'occhiata al documento, al quale, di nuovo, potete accedere con il vostro Apple Developer ID.
Questo sembra essere un problema con l'attuale build di Xcode e iOS 7.
Alcuni contenuti correlati sui forum degli sviluppatori Apple sono in una ricerca per UIStatusBarStyleLightContent in "iOS 7 Beta Livability" sui forum degli sviluppatori Apple* (attualmente 32 messaggi).
Mi sono imbattuto in esso cercando di impostarlo sulla versione leggera.
(Questo è solo un seguito alla risposta di Aaron).