无法更改导航栏颜色

3

我试图更改一个包含UISearchController的视图中导航栏的颜色。之前在appDelegate中设置了整个应用程序的导航栏颜色,但我希望这个视图的导航栏有不同的颜色。问题是我不知道将代码放置在哪个函数中可以覆盖appDelegate的代码。例如,viewDidLoad和viewWillAppear在视图首次加载时不会更改颜色,只有在我进入和取消searchController后才会更改颜色。我应该把以下代码放在哪个函数里?

UINavigationBar.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)

尝试在 viewDidLayoutSubviews() 中。 - Guy Daher
没有起作用 @GuyDaher - rohaldb
2个回答

8

有两种方法可以实现这个功能。您可以在AppDelegate中修改整个应用程序的外观代理,也可以修改特定屏幕的单独导航栏。

当您关闭视图时,需要在viewWillDisappear中重置barTintColor。

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    // Set to new colour for whole app
    UINavigationBar.appearance().barTintColor = UIColor.blueColor()

    // Or, Set to new colour for just this navigation bar
    self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    //Revert to old colour, whole app
    UINavigationBar.appearance().barTintColor = UIColor.redColor()

    //Revert to old colour, just this navigation bar
    self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
}

0

不要直接更改导航栏的颜色,而应该在 viewWillAppear 中更改导航控制器的栏颜色,并在关闭视图时将其改回。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接