如何更改状态栏文本颜色。附上截图

时间:2017-03-27 10:43:05

标签: ios xcode uinavigationbar uistatusbar ios-statusbar

我想将状态栏文字颜色更改为客户颜色,如附加截图。

我用它来制作轻量级内容 -

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

但文字颜色不变。有人可以帮忙吗?

Status bar screenshot

4 个答案:

答案 0 :(得分:4)

UIViewControllerBasedStatusBarAppearance设置为YES文件中的.plist

viewDidLoad方法中,执行

[self setNeedsStatusBarAppearanceUpdate];

添加以下方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

答案 1 :(得分:2)

以下是关于状态栏更改的Apple Guidelines/Instruction。只有黑暗&状态栏中允许亮(同时为黑色)。它不允许在状态栏中设置颜色(粉红色,如图中所示)。

以下是 - 如何更改状态栏样式:

如果要设置状态栏样式,应用程序级别,请在“.plist”文件中将UIViewControllerBasedStatusBarAppearance设置为NO

如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:

  1. 如果您只需要在UIViewController级别设置状态栏样式,请在UIViewControllerBasedStatusBarAppearance文件中将YES设置为.plist
  2. 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate

  3. 覆盖视图控制器中的preferredStatusBarStyle。

  4. -

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

    根据状态栏样式设置级别设置.plist的值。 enter image description here


    您可以在应用程序启动期间或视图控制器的viewDidLoad期间为状态栏设置背景颜色。

    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
        }
    
    }
    



    结果如下:

    enter image description here

答案 2 :(得分:0)

状态栏的文字颜色可以是白色或黑色。

答案 3 :(得分:0)

如果您的应用程序将支持在应用程序的 Info.plist 中,将“基于控制器的状态栏外观” 设置为NO

appDelegate.swift 中的didFinishLaunchingWithOptions函数中,添加:

UIApplication.shared.statusBarStyle = .lightContent

此处描述了最佳答案:How to set Status Bar Style in Swift 3