Question
My application has a dark background, but in iOS 7 the status bar became transparent. So I can't see anything there, only the green battery indicator in the corner. How can I change the status bar text color to white like it is on the home screen?
Answer
-
Set the
UIViewControllerBasedStatusBarAppearance
toYES
in the .plist file. -
In the
viewDidLoad
do a[self setNeedsStatusBarAppearanceUpdate];
-
Add the following method:
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
Note : This does not work for controllers inside UINavigationController
,
please see [Tyson's comment
below](https://stackoverflow.com/questions/17678881/how-to-change-status-bar-
text-color-in-ios-7#comment28947732_17768797) :)
Swift 3 - This will work controllers inside UINavigationController
. Add
this code inside your controller.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 and SwiftUI
For SwiftUI create a new swift file called HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Then change the following lines of code in the SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
to
window.rootViewController = HostingController(rootView: ContentView())