Ios 有没有办法在swift 4中更改UINavigationBar的背景色
正如标题所暗示的,我想知道是否有办法在Swift中更改UINavigationBar的背景色。我知道这个问题以前曾经被问过一次,因为我发现了这个问题,但当我试图更新它时,我无法让任何代码正常工作。我已经链接了自定义类,它是Ios 有没有办法在swift 4中更改UINavigationBar的背景色,ios,swift,uinavigationbar,Ios,Swift,Uinavigationbar,正如标题所暗示的,我想知道是否有办法在Swift中更改UINavigationBar的背景色。我知道这个问题以前曾经被问过一次,因为我发现了这个问题,但当我试图更新它时,我无法让任何代码正常工作。我已经链接了自定义类,它是UINavigationController的子类。目前,所有子UINavigationItem的背景色都是默认的略呈白色的背景色。我希望能够改变它们的颜色,以适应我的应用程序中的其他UI元素,因为它们大多数都非常暗,所以我正在尝试改变这一点,下面是我试图复制的图片 有没有更
UINavigationController
的子类。目前,所有子UINavigationItem
的背景色都是默认的略呈白色的背景色。我希望能够改变它们的颜色,以适应我的应用程序中的其他UI元素,因为它们大多数都非常暗,所以我正在尝试改变这一点,下面是我试图复制的图片
有没有更近期的方法可以做到这一点?可能使用用户定义的运行时属性。我没有主意了
我试过了
@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;
}
和
@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;
}
和
@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;
}
以及页面上发布的所有其他答案。稍微调整它们以删除错误。您走的方向是正确的,但您在错误的位置调用它。您应该将其移动到
视图将出现
,每次显示视图时都会调用该视图viewDidLoad()
只调用一次
这意味着另一个视图控制器甚至操作系统可以在viewDidLoad()之后更改导航栏的颜色
此外,在Swift中不需要分号。您的方法是正确的,但您在错误的位置调用它。您应该将其移动到视图将出现
,每次显示视图时都会调用该视图viewDidLoad()
只调用一次
这意味着另一个视图控制器甚至操作系统可以在viewDidLoad()之后更改导航栏的颜色
此外,您不需要在Swift中使用分号。也许您应该为我们发布您尝试过(但不起作用)的代码,以便为您提供最佳帮助。如果它当时起作用,现在也应该起作用。不同版本之间可能会有一些琐碎的事情。您的视图控制器是否位于导航控制器中?导航栏出现了吗?您发布的代码的结果是什么?当您设置bartincolor
时发生了什么?没有什么?如果有,您有导航控制器吗?你有导航栏吗?显示更多上下文!如果您有任何其他反馈,请随意评论。我是新来的,所以我正在努力解决如何正确表达问题,并感谢您的反馈@matt,但您的屏幕截图显示您的导航栏存在严重问题。它不在状态栏后面,就像它应该的那样。这表明我是对的:问题是你没有导航控制器。所以你的命令都不起作用。你需要更多地说明这段代码属于哪一类,以及为什么它有这个不正确的导航栏。也许你应该把你尝试过的代码(但没有成功)发布给我们,以便更好地帮助你。如果它当时起作用,现在也应该起作用。不同版本之间可能会有一些琐碎的事情。您的视图控制器是否位于导航控制器中?导航栏出现了吗?您发布的代码的结果是什么?当您设置bartincolor
时发生了什么?没有什么?如果有,您有导航控制器吗?你有导航栏吗?显示更多上下文!如果您有任何其他反馈,请随意评论。我是新来的,所以我正在努力解决如何正确表达问题,并感谢您的反馈@matt,但您的屏幕截图显示您的导航栏存在严重问题。它不在状态栏后面,就像它应该的那样。这表明我是对的:问题是你没有导航控制器。所以你的命令都不起作用。您需要更多地说明这段代码属于哪个类,以及为什么它有这个不正确的导航栏。