Answers:
这不是适合几行代码的内容,但这是一种可能对您有用的方法。
隐藏导航栏:
[[self navigationController] setNavigationBarHidden:YES animated:YES];要显示它:
[[self navigationController] setNavigationBarHidden:NO animated:YES];有关此方法的文档,请参见此处。
要侦听“双击”或双击,请子类化UIView并创建该子类的实例作为视图控制器的view属性。
在view子类中,-touchesEnded:withEvent:通过测量两次连续点击之间的时间(也许使用),覆盖其方法并计算在一段时间内您获得了多少触摸CACurrentMediaTime()。或测试的结果[touch tapCount]。
如果两次轻按,则子类视图将发出一个NSNotification视图控制器已注册以监听的视图。
当您的视图控制器听到通知时,它会触发一个选择器,该选择器使用上述代码隐藏或显示导航栏,具体取决于导航栏的当前可见状态,可通过读取导航栏的isHidden属性进行访问。
编辑
我的答案中有关处理点击事件的部分可能在iOS 3.1之前有用。该UIGestureRecognizer班可能是用于处理双水龙头,这几天的更好方法。
编辑2
隐藏导航栏的快捷方法是:
navigationController?.setNavigationBarHidden(true, animated: true)要显示它:
navigationController?.setNavigationBarHidden(false, animated: true)此代码将为您提供帮助。
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] 
initWithTarget:self action:@selector(showHideNavbar:)];
[self.view addGestureRecognizer:tapGesture];
-(void) showHideNavbar:(id) sender 
{ 
// write code to show/hide nav bar here 
// check if the Navigation Bar is shown
if (self.navigationController.navigationBar.hidden == NO)
{
// hide the Navigation Bar
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
// if Navigation Bar is already hidden
else if (self.navigationController.navigationBar.hidden == YES)
{
// Show the Navigation Bar
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
}
首先,阅读iOS的《 View Controller编程指南》中有关“为导航视图采用全屏布局”的部分以及有关“自定义视图”的相关部分。如果您尝试执行类似Photos.app的操作,则可能正在使用滚动视图。请注意,导航栏会自动向滚动视图添加滚动内容插图,以说明导航栏(和状态栏)的高度,因此您必须在紧随其后将滚动视图的contentInset属性重置回零(UIEdgeInsetsZero)设置navigationBar的初始状态并在视图出现之前。
然后,如果您单击一下即可切换navigationBar和/或状态栏以显示或隐藏,则需要在切换方法中做两件事。第一种似乎是在更改NavigationBar隐藏属性之前保存滚动视图的contentOffset属性,然后立即将保存的值恢复为contentOffset。在更改navigationBarHidden属性之后,再次将contentInset属性归零到UIEdgeInsetsZero。另外,如果要切换状态栏,则需要先更改其状态,然后才能更改NavigationBar的状态。
在Swift中试试这个,
navigationController?.isNavigationBarHidden = true  //Hide
navigationController?.isNavigationBarHidden = false //Show
要么
navigationController?.setNavigationBarHidden(true, animated: true) //Hide
navigationController?.setNavigationBarHidden(false, animated: true) //Show
隐藏导航栏:
[self.navigationController setNavigationBarHidden:YES animated:YES];要显示导航栏:
[self.navigationController setNavigationBarHidden:NO animated:YES];这是一个非常快速和简单的解决方案:
self.navigationController.hidesBarsOnTap = YES;这将适用于单击而不是双击。同样,即使按下或弹出当前视图控制器,它也会改变导航控制器的行为。
如果只想为单个视图控制器设置行为,则始终可以在控制器的viewWillAppear:和viewWillDisappear:操作中修改此行为。
这是文档:
在Swift 4.2和Xcode 10中
self.navigationController?.isNavigationBarHidden = true  //Hide
self.navigationController?.isNavigationBarHidden = false  //Show
如果您不想只在第一个VC中显示导航栏,而是想在第二个VC onword的中显示
在您的第一个VC中编写此代码。
override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true  //Hide
}
override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = false  //Show
}
如果要检测导航栏的状态,则将其隐藏/显示。您只需使用以下代码即可检测到-
if self.navigationController?.isNavigationBarHidden{
    print("Show navigation bar")
} else {
    print("hide navigation bar")
}hidesBarsOnTap UINavigationController属性上的内容可以通过iOS8 SDK来处理
SWIFT CODE:此代码完全适用于iOS 3.2和更高版本。
  override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap")let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap")
    tapGesture.delegate = self
    self.view.addGestureRecognizer(tapGesture)然后写
func hideNavBarOntap() {
    if(self.navigationController?.navigationBar.hidden == false) {
        self.navigationController?.setNavigationBarHidden(true, animated: true) // hide nav bar is not hidden
    } else if(self.navigationController?.navigationBar.hidden == true) {
        self.navigationController?.setNavigationBarHidden(false, animated: true) // show nav bar
    }
}