为什么我们要在AppDelegate中完全自定义UINavigationBar的barTintColor?

Why do we customize UINavigationBar's barTintColor exactly in AppDelegate?

有人写过这种代码

override func viewDidLoad() {
    super.viewDidLoad()

    // Status bar white font
    self.navigationBar.barStyle = UIBarStyle.Black
    self.navigationBar.tintColor = UIColor.whiteColor()
}

但是不行,在AppDelegate里面更新确实可以,但是为什么在viewDidLoad里面不行呢?

如果您想更改导航栏背景颜色,请使用以下代码

self.navigationController?.navigationBar.barTintColor = UIColor.red // set what ever color that you wanr.

试试这个:

override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.navigationBar.barStyle = .black
        self.navigationController?.navigationBar.tintColor = UIColor.white

}

您可以在 XIB/Storyboard 中设置这些属性。无需在每个控制器中设置它。

如果你想从视图控制器中设置它,那么你需要self.navigationController?.navigationBar.barTintColor = typeyourcolor.

导航栏是导航控制器的 属性 而不是视图控制器。

如果你想改变导航栏的背景颜色,那么使用下面的代码

self.navigationController?.navigationBar.barTintColor = UIColor.green

如果你想改变导航栏项目的颜色然后使用下面的代码

self.navigationController?.navigationBar.tintColor = UIColor.red