问题:
我在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
进行),一切都工作正常。第一个视图控制器上的导航栏消失为黑色,看起来很丑陋。有没有办法预防/解决这个问题?
截图:
答案 0 :(得分:5)
我最近遇到了一个非常类似的问题。尝试在两个视图控制器和self.navigationController?.navigationBar.translucent = true
中设置self.edgesForExtendedLayout = UIRectEdgeNone
。
故事板版本:Extended Edges - Under Top Bars
答案 1 :(得分:1)
我最近又碰到了这个,发现了一种在故事板中修复它的方法。如果您使用不透明的导航栏,请确保"延伸边缘"设置为" Under Opaque Bars"已设定。事实上,我只是设置了所有这三个,如下所示: -
答案 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