swift:改变导航栏的颜色

swift: change the color of the navigation bar

我正在使用带有红色调导航栏的 FirstViewController。当我转到下一个 SecondViewController 时,我使用此代码清除导航栏颜色:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

但是当我返回 FirstViewController 时,我的导航栏颜色不是红色。很明显。但它应该是红色的。如何解决?

FirstViewController中的代码:

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

        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
        self.navigationController?.navigationBar.shadowImage = UIImage()
        
        self.navigationController?.navigationBar.barTintColor = UIColor(red: 239/255, green: 210/255, blue: 166/255, alpha: 1.0)
    }

设置FirstViewControllerViewWillAppear方法的导航栏颜色。

编辑您的问题。不清楚你希望你的导航栏是透明的还是红色的。
但是,您可以将其放入 AppDelegate :

let mainVC = MainViewController()
let navigationController = UINavigationController(rootViewController: mainVC)
navigationController.navigationBar.barTintColor = .clear// or .red

而不是barTintColor,使用backgroundColor来改变navigationBar'r颜色,即

FirstVC,

class FirstVC: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.backgroundColor = .red //here...
    }
}

SecondVC,

class SecondVC: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.navigationBar.backgroundColor = .clear //here...
    }
}