无法更改导航栏颜色

时间:2016-02-21 23:16:53

标签: ios swift uinavigationbar background-color appdelegate

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

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

2 个答案:

答案 0 :(得分:6)

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

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#mainNavBar">
        <span class="icon-bar"> </span>
        <span class="icon-bar"> </span>
        <span class="icon-bar"> </span>
      </button>
      <a class="navbar-brand">Brand Name</a>
    </div>
    <div class="collapse navbar-collapse" id="mainNavBar">
      <ul class="nav navbar-nav">
        <li class="active">
          <a href="#">About Us</a>
        </li>
        <li>
          <a href="#">Projects</a>
        </li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li>
          <a href="#">Contact</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

答案 1 :(得分:0)

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