在特定视图中隐藏导航栏 - Swift 3
Hide Navigation Bar in Specific View - Swift 3
我有 NavigationController 来处理我的应用程序中的导航。
根据我的设计,第一个视图应该没有可见的 NavigationBar。之后的人都会。
在这个 FirstView 中,我目前使用它来隐藏 ViewDidLoad 内的 NavBar:
self.navigationController?.isNavigationBarHidden = true
我可以从这个 FirstView 访问其他视图。在这些其他视图中,我使用以下方式显示 NavBar:
self.navigationController?.isNavigationBarHidden = false
我的问题是:
- 当我从具有可见导航栏的视图导航回具有隐藏导航栏的第一个视图时,导航栏现在可见。
基本上 NavBar 只在第一次隐藏然后在我使用后退按钮时显示。
我该如何预防?
谢谢!
将该代码移至 viewWillAppear()
而不是 viewDidLoad()
。
viewDidLoad()
每个实例化的视图控制器只调用一次,而 viewWillAppear()
会在视图控制器即将显示在屏幕上时调用。
您可以阅读有关视图控制器生命周期的更多信息here。
在您的 FirstViewController 的 viewWillAppear 方法中编写以下代码。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = true
}
并在您的 SecondViewController 的 viewWillAppear 方法中编写以下代码
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = false
}
不要尝试在 viewWillAppear 和 viewWillDisappear 中随后在 FirstViewController[=25= 中隐藏和显示导航栏].
您可以使用此功能隐藏带有炫酷动画的 NavigationBar:
func setupAnimationForNavigationBar(caseOfFunction: Bool) {
if caseOfFunction == true {
UIView.animate(withDuration: 0.5) {
self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
}
} else {
UIView.animate(withDuration: 0.5, animations: {
self.navigationController?.navigationBar.transform = CGAffineTransform.identity
})
}
}
如果要隐藏NavigationBar,则设置"True",如果要再次调用NavigationBar,则设置"False"
我有 NavigationController 来处理我的应用程序中的导航。 根据我的设计,第一个视图应该没有可见的 NavigationBar。之后的人都会。
在这个 FirstView 中,我目前使用它来隐藏 ViewDidLoad 内的 NavBar:
self.navigationController?.isNavigationBarHidden = true
我可以从这个 FirstView 访问其他视图。在这些其他视图中,我使用以下方式显示 NavBar:
self.navigationController?.isNavigationBarHidden = false
我的问题是:
- 当我从具有可见导航栏的视图导航回具有隐藏导航栏的第一个视图时,导航栏现在可见。 基本上 NavBar 只在第一次隐藏然后在我使用后退按钮时显示。
我该如何预防?
谢谢!
将该代码移至 viewWillAppear()
而不是 viewDidLoad()
。
viewDidLoad()
每个实例化的视图控制器只调用一次,而 viewWillAppear()
会在视图控制器即将显示在屏幕上时调用。
您可以阅读有关视图控制器生命周期的更多信息here。
在您的 FirstViewController 的 viewWillAppear 方法中编写以下代码。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = true
}
并在您的 SecondViewController 的 viewWillAppear 方法中编写以下代码
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = false
}
不要尝试在 viewWillAppear 和 viewWillDisappear 中随后在 FirstViewController[=25= 中隐藏和显示导航栏].
您可以使用此功能隐藏带有炫酷动画的 NavigationBar:
func setupAnimationForNavigationBar(caseOfFunction: Bool) {
if caseOfFunction == true {
UIView.animate(withDuration: 0.5) {
self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
}
} else {
UIView.animate(withDuration: 0.5, animations: {
self.navigationController?.navigationBar.transform = CGAffineTransform.identity
})
}
}
如果要隐藏NavigationBar,则设置"True",如果要再次调用NavigationBar,则设置"False"