正如标题所示,我想知道是否有一种方法可以在Swift中更改UINavigationBar的背景颜色。我知道这个问题question here之前曾被问过一次,但是当我尝试将其更新时,我无法获得任何代码。我已经链接了自定义类,该自定义类是UINavigationController
的子类。当前,所有子UINavigationItem
的背景色均具有略带白色的默认背景色。我希望能够更改其颜色以适合我的应用程序中的其余UI元素,因为它们中的大多数都非常暗,所以我想更改一下下面的内容,以了解要复制的内容。< / p>
是否有更新的方法?也许使用用户定义的运行时属性。我没主意了。
我已经尝试过
@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;
}
以及页面上发布的所有其他答案。略微调整它们以消除错误。
答案 0 :(得分:3)
您处在正确的轨道上,但您在错误的地方叫它。您应该将其移动到viewWillAppear
,每次显示视图时都会调用它。 viewDidLoad()
仅被调用一次。
这意味着viewDidLoad()
之后,另一个视图控制器甚至操作系统都可以更改导航栏的颜色
override func viewWillAppear(_ animated:Bool)
{
super.viewWillAppear( animated)
self.navigationController?.navigationBar.barTintColor = UIColor.red
}
此外,您在Swift中不需要分号。