状态栏颜色iOS

时间:2017-02-03 22:28:18

标签: ios swift statusbar uistatusbar

不知何故,无论我遇到的查询或答案数量,我找不到一个人可以说如何使用Swift 3在iOS中设置状态栏颜色。我已经看过所有的您添加的建议:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

但问题是,我不想要一个透明的状态栏。我想要一个特定的十六进制颜色作为状态栏颜色。

2 个答案:

答案 0 :(得分:3)

以下是关于状态栏更改的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

答案 1 :(得分:1)

没有用于设置状态栏内容颜色的API;如果你想要一个,你应该提交一个增强请求here。如果要更改状态栏后面背后的背景颜色,请将应用背景颜色的视图放在应用程序窗口的顶部。