根据视图控制器设置UINavigationBar颜色

时间:2015-07-30 23:01:16

标签: ios swift uinavigationbar

我想为每个视图控制器设置UINavigationBar颜色,而不是在app委托中,因为这样做会这样做。

    UINavigationBar.appearance().backgroundColor = UIColor.whiteColor()
    UINavigationBar.appearance().translucent = false

我环顾四周,却无法找到如何做到这一点。我试着这样做,但它不起作用:

  override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
        self.navigationController?.navigationBar.tintColor = UIColor.blackColor()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    }

如何根据视图控制器而不是全局设置颜色?

1 个答案:

答案 0 :(得分:1)

根据我的理解,您需要在每个视图控制器中设置代码以设置导航栏颜色。尝试将此代码添加到每个视图控制器的viewDidLoad

if let navController = self.navigationController {
    navController.navigationBar.tintColor = self.view.tintColor
}

无论视图控制器的色调是什么,这都会使导航栏的色调变亮,但显然可以将其更改为您想要的任何颜色。

这样做的好处就是你可以直接复制粘贴它而不必改变任何东西,因此很容易在多个视图控制器上实现(因为没有对视图控制器名称的特定引用)。

我希望这会有所帮助。