有没有办法在Swift 4中更改UINavigationBar的背景颜色

时间:2018-09-04 02:18:06

标签: ios swift uinavigationbar

正如标题所示,我想知道是否有一种方法可以在Swift中更改UINavigationBar的背景颜色。我知道这个问题question here之前曾被问过一次,但是当我尝试将其更新时,我无法获得任何代码。我已经链接了自定义类,该自定义类是UINavigationController的子类。当前,所有子UINavigationItem的背景色均具有略带白色的默认背景色。我希望能够更改其颜色以适合我的应用程序中的其余UI元素,因为它们中的大多数都非常暗,所以我想更改一下下面的内容,以了解要复制的内容。< / p>

enter image description here

是否有更新的方法?也许使用用户定义的运行时属性。我没主意了。

我已经尝试过

@objc func changebarColor(){
        self.navigationController?.navigationBar.barTintColor = UIColor.red;
}

    override func viewDidLoad() {
        super.viewDidLoad()
        changebarColor()


}

override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.navigationBar.barStyle = UIBarStyle.blackTranslucent

        self.navigationController?.navigationBar.barTintColor  = UIColor.red;

}

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController!.navigationBar .setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController!.navigationBar.shadowImage = UIImage();
    self.navigationController!.navigationBar.isTranslucent = true;
    self.navigationController!.navigationBar.backgroundColor = UIColor.red;
}

以及页面上发布的所有其他答案。略微调整它们以消除错误。

1 个答案:

答案 0 :(得分:3)

您处在正确的轨道上,但您在错误的地方叫它。您应该将其移动到viewWillAppear,每次显示视图时都会调用它。 viewDidLoad()仅被调用一次。

这意味着viewDidLoad()之后,另一个视图控制器甚至操作系统都可以更改导航栏的颜色

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

此外,您在Swift中不需要分号。