为什么UINavigationBar会变黑?

时间:2015-06-10 18:04:35

标签: ios swift uinavigationcontroller uinavigationbar

问题:

我在UITableViewController中嵌入了UINavigationController。按表格视图中的单元格切换到另一个表格视图控制器。在所述表视图控制器中,我希望导航栏在保持标签栏项目的同时不可见,因此我将以下内容添加到其viewDidLoad()

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.tintColor = .black 

对于第一个UITableViewController,我希望导航栏正常,所以在viewDidAppear()我做了以下内容:

self.navigationController?.navigationBar.isTranslucent = false

除了过渡期间(我正在通过performSegueWithIdentifier进行),一切都工作正常。第一个视图控制器上的导航栏消失为黑色,看起来很丑陋。有没有办法预防/解决这个问题?

截图: enter image description here

7 个答案:

答案 0 :(得分:5)

我最近遇到了一个非常类似的问题。尝试在两个视图控制器和self.navigationController?.navigationBar.translucent = true中设置self.edgesForExtendedLayout = UIRectEdgeNone
故事板版本:Extended Edges - Under Top Bars

答案 1 :(得分:1)

我最近又碰到了这个,发现了一种在故事板中修复它的方法。如果您使用不透明的导航栏,请确保"延伸边缘"设置为" Under Opaque Bars"已设定。事实上,我只是设置了所有这三个,如下所示: -

enter image description here

答案 2 :(得分:1)

只需更改您的navigationController视图的backgroundColor

navigationController?.view.backgroundColor = // whatever

答案 3 :(得分:0)

您可以为导航栏的半透明设置动画。因此,在第二个{ "version": "1.0.0-*", "dependencies": { "System.ServiceModel.Web": "1.0.0", "Newtonsoft.Json": "6.0.8" }, "commands": { "run": "run" }, "frameworks": { "dnx451": {}, "dnxcore50": { "dependencies": { "System.Console": "4.0.0-beta-*", "System.ServiceModel.Web": "1.0.0" } } } } 的{​​{1}}中,您可以编写以下内容:

viewDidLoad

答案 4 :(得分:0)

将应用程序的窗口背景颜色更改为适合您的颜色:

self.window?.backgroundColor = .white

其他解决方案会在多个内部屏幕上引起其他问题。

答案 5 :(得分:0)

在 viewDidLoad 添加:

extendedLayoutIncludesOpaqueBars = true

答案 6 :(得分:0)

对我来说有其他帮助(Swift 5):

self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.barTintColor = UIColor.green //change to needed color