应用运行时如何更改NavigationBarColor

时间:2019-06-10 09:50:15

标签: ios swift

我用它来设置NavigationBarColor在运行之前:

with open('urls.txt', 'r') as f:
    for line in f:
        line = line.strip()   # this might be optional
        if line.startswith('/'):
            print(line.split("/")[1])

但是在程序中,我想更改NavigationBarColor,所以我再次使用它

 UINavigationBar.appearance().barTintColor = Color.NavigationBackground

但是什么也没发生,仍然是白色(Color.Background)
颜色是我定义的结构。
如何正确改变颜色? 我想这样实现:Trying to reload view controller to update the current theme

5 个答案:

答案 0 :(得分:2)

如果您希望每个屏幕具有不同的颜色,则会在视图下方的行中添加您选择的颜色,它将更改每个屏幕的颜色。

Swift 4.2:

//To change Navigation Bar Background Color
UINavigationBar.appearance().barTintColor = UIColor.blue
//To change Back button title & icon color
UINavigationBar.appearance().tintColor = UIColor.white
//To change Navigation Bar Title Color
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

将其添加到视图中,然后您可以看到它正在更改。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.barTintColor = .orange
}

答案 1 :(得分:1)

如果要更改导航栏颜色

navigationController?.navigationBar.barTintColor = UIColor.black

答案 2 :(得分:1)

使用外观API和barTintColor颜色。

UINavigationBar.appearance().barTintColor = UIColor.red

答案 3 :(得分:1)

在您的ViewController's viewWillAppear(_:)中,只需将navigationBar's barTintColor设置为所需的color,即

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.barTintColor = .red
}

enter image description here

答案 4 :(得分:1)

使用此代码最初在UINavigationBar的{​​{1}}中设置Appdelegate的颜色。

didFinishLaunchingWithOptions

当您想在应用程序中更改 UINavigationBar.appearance().isTranslucent = false UINavigationBar.appearance().backgroundColor = Color.Background UINavigationBar.appearance().barTintColor = Color.Background UINavigationBar.appearance().tintColor = UIColor.white 的颜色时,只需使用以下代码行。假设更改颜色是您的按钮操作。

UINavigationBar