正如标题所暗示的,我想知道是否有一种方法可以在Swift中改变UINavigationBar的背景色。我知道这个问题曾经被问过一次,因为我发现这个question here,但是当我试图更新它时,我无法让任何代码工作。我链接了自定义类,它是UINavigationController
的子类。目前,所有子UINavigationItem
的背景色都是默认的略带白色的背景色。我想能够改变他们的颜色,以适应我的应用程序中的其他用户界面元素,因为他们中的大多数是非常黑暗的,所以我试图改变下面的图片,我试图复制。
有没有更近期的方法来做这个?可能使用用户定义的运行时属性。我没主意了。
我试过了
@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;
}
以及页面上发布的所有其他答案。稍微调整它们以消除错误。
最佳答案
你走对了路,但你打错了地方。您应该将其移动到viewWillAppear
中,每次显示视图时都会调用该命令。viewDidLoad()
只调用一次。
这意味着另一个视图控制器甚至操作系统可以在viewDidLoad()
之后更改导航栏的颜色
override func viewWillAppear(_ animated:Bool)
{
super.viewWillAppear( animated)
self.navigationController?.navigationBar.barTintColor = UIColor.red
}
而且,在Swift中不需要分号。
关于ios - 有没有办法在Swift 4中更改UINavigationBar的背景颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52157957/