问题描述
我在 UINavigationController 中有三个 viewController.在第二个中,我需要隐藏导航栏而不是后退按钮和其他栏按钮.由于这个原因,我不能使用 isNavigationBarHidden = true
目前我正在按以下方式处理上述问题:
I have three viewControllers in a UINavigationController. In the second one I need to hide the navigation bar but not the back button and other bar button. For this reason I can't use isNavigationBarHidden = true
Currently I am handling the above as follows :
第一个视图控制器:
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(只隐藏导航栏):
Second viewController (hide only nav bar) :
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 编写的代码.但我没有任何其他解决方案可以做到这一点.附上截图:
The issue here is that when I navigate from and to the firstViewController, for a very short duration when the 1st viewController is disappearing and appearing respectively, I see a black nav bar on it. I know this is because of the code written in 2nd viewController. But I don't have any other close solution of doing this. Attaching a screenshot :
第一个 viewController(应该是怎样的):
第二个视图控制器:
第一个 viewController(带有短暂的黑色导航栏):
推荐答案
在First viewController中,同样设置backgroundImage和shadowImage的navigationBar 为 nil,即
In First viewController, also set the backgroundImage and shadowImage of navigationBar as nil, i.e.
class FirstVC: UIViewController
{
override func viewWillAppear(_ animated: Bool)
{
super.viewWillAppear(animated)
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.barTintColor = .red
self.navigationController?.navigationBar.tintColor = UIColor.white
self.navigationController?.navigationBar.barStyle = .black
}
}
class SecondVC: UIViewController
{
override func viewWillAppear(_ animated: Bool)
{
super.viewWillAppear(animated)
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.view.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.shadowImage = UIImage()
}
}
这篇关于UINavigationController 仅隐藏导航栏 - 后退动画问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)