Search code examples
iosxcodeuinavigationbaruistatusbarios-statusbar

How can I change my status bar text color. Screenshot attached


I want to change status bar text color to customer color like screenshot attached.

I have used this to make it light content -

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

But text color not changing. Can anyone help?

Status bar screenshot


Solution

  • Here is Apple Guidelines/Instruction about status bar change. Only Dark & light (while & black) are allowed in status bar. It does not allow to set a color (pink, as shown in your image) in status bar.

    Here is - How to change status bar style:

    If you want to set status bar style, application level then set UIViewControllerBasedStatusBarAppearance to NO in your `.plist' file.

    if you wan to set status bar style, at view controller level then follow these steps:

    1. Set the UIViewControllerBasedStatusBarAppearance to YES in the .plist file, if you need to set status bar style at UIViewController level only.
    2. In the viewDidLoad add function - setNeedsStatusBarAppearanceUpdate

    3. override preferredStatusBarStyle in your view controller.

    -

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setNeedsStatusBarAppearanceUpdate()
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    Set value of .plist according to status bar style setup level. enter image description here


    You can set background color for status bar during application launch or during viewDidLoad of your view controller.

    extension UIApplication {
    
        var statusBarView: UIView? {
            return value(forKey: "statusBar") as? UIView
        }
    
    }
    
    // Set upon application launch, if you've application based status bar
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
            return true
        }
    }
    
    
    or 
    // Set it from your view controller if you've view controller based statusbar
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        }
    
    }
    



    Here is result:

    enter image description here