无法更改导航栏颜色
Unable to change navigation bar color
我正在尝试更改包含 UISearchController 的视图中导航栏的颜色。我之前已经在我的 appDelegate 中为整个应用程序设置了导航栏的颜色,但我希望这个视图导航栏具有不同的颜色。问题是我不知道将代码放置在哪个函数中,这样它将覆盖 appDelegate 代码。例如,viewDidLoad 和 viewWilAppear 在视图首次加载时不会更改颜色,只有在我输入并取消 searchController 后才会更改颜色。我应该将以下内容放在哪个功能?
UINavigationBar.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
与其直接更改导航栏颜色,不如在 viewWillAppear
中更改导航控制器的栏颜色,并在关闭视图时将其改回。
有两种方法可以做到这一点。您可以修改您在 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()
}
我正在尝试更改包含 UISearchController 的视图中导航栏的颜色。我之前已经在我的 appDelegate 中为整个应用程序设置了导航栏的颜色,但我希望这个视图导航栏具有不同的颜色。问题是我不知道将代码放置在哪个函数中,这样它将覆盖 appDelegate 代码。例如,viewDidLoad 和 viewWilAppear 在视图首次加载时不会更改颜色,只有在我输入并取消 searchController 后才会更改颜色。我应该将以下内容放在哪个功能?
UINavigationBar.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
与其直接更改导航栏颜色,不如在 viewWillAppear
中更改导航控制器的栏颜色,并在关闭视图时将其改回。
有两种方法可以做到这一点。您可以修改您在 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()
}