ios - 无法更改导航栏颜色

标签 ios swift uinavigationbar background-color appdelegate

我正在尝试更改包含 UISearchController 的 View 中导航栏的颜色。我之前已经在我的 appDelegate 中为整个应用程序设置了导航栏的颜色,但我希望这个 View 导航栏具有不同的颜色。问题是我不知道将代码放置在哪个函数中,这样它将覆盖 appDelegate 代码。例如,viewDidLoad 和 viewWilAppear 在 View 首次加载时不会更改颜色,只有在我输入并取消 searchController 后才会更改颜色。我应该放置以下哪个函数?

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

最佳答案

有两种方法可以做到这一点。您可以修改在 AppDelegate 中为整个应用程序设置的外观代理,也可以修改特定屏幕的单个导航栏。

当您关闭 View 时 - 您需要在 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()
}

关于ios - 无法更改导航栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543389/

相关文章:

arrays - 函数内结构数组的全局作用域 - Swift

xcode - 禁用导航栏中的 UIBarButton 项目并停止辅助弹出窗口

ios - 设置导航栏以覆盖模态转场中的状态栏

uinavigationbar - 在swift中设置navigationBar背景图片

ios - 是否可以选择多个 MKAnnotationViews?

ios - Swift:如何在按下按钮时遍历所有 tableView 行

ios - 有谁知道如何实现在表格 View 单元格的搜索栏中显示电话簿中的联系人列表?

swift - 有没有办法在 Swift 中对协议(protocol)进行默认实现?

iOS 文档/文件类型关联 - 通配符 UTI?

ios - JSON字典为NSNumber返回__NSCFNumber类