【发布时间】:2017-10-06 10:15:00
【问题描述】:
我在UINavigationController 中有三个视图控制器。在第二个中,我需要隐藏导航栏而不是后退按钮和其他栏按钮。因此我不能使用isNavigationBarHidden = true
目前我正在按以下方式处理上述问题:
第一个视图控制器:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.barTintColor = Constants.kThemeRedColor
self.navigationController?.navigationBar.tintColor = UIColor.white
self.navigationController?.navigationBar.barStyle = .black
self.navigationController?.navigationBar.isTranslucent = false
}
第二个viewController(只隐藏导航栏):
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = UIColor.clear
}
这里的问题是,当我在 firstViewController 之间导航时,在很短的时间内,当第一个 viewController 分别消失和出现时,我会看到一个黑色的导航栏。我知道这是因为用 2nd viewController 编写的代码。但我没有任何其他解决方案可以做到这一点。附上截图:
第一个 viewController(应该是怎样的):
第二个视图控制器:
第一个 viewController(带有短暂的黑色导航栏):
【问题讨论】:
-
您的免费视图颜色是什么?导航栏下方是表格视图吗?
标签: ios swift uiviewcontroller uinavigationcontroller uinavigationbar