我有一个导航流程的导航控制器,如下所示:
NC - > A - > B.
B通过push segue出现 .
A的导航栏使用以下内容透明
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController!.navigationBar.isTranslucent = true
self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController!.navigationBar.shadowImage = UIImage()
}
并且在viewWillDisappear中半透明设置为false,以便B可以拥有通常的导航栏:
override func viewWillDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.navigationController!.navigationBar.isTranslucent = false
}
问题是当在B中按下后退按钮返回A时,B的导航栏会在消失之前暂时出现 . 如何解决这个问题?
PS:我不想为B的重写方法添加代码,因为B可能被其他导航控制器共享 .
1 回答
您无需在
viewWillDisappear
方法中切换任何内容 . 只需在每个屏幕中切换viewWillAppear
方法中的所有内容即可 .这是你想要的吗?如果是这样的话,我在Github上为你做了一个示例项目,以及将来对iOS新手的其他人 .
https://github.com/glennposadas/showhidenavbar-ios
虽然它使用我非常简单的cocoapod,但您可以从我的框架和示例项目中复制所有内容 .