导航条显示/隐藏

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

我有一个应用程序与导航栏由两个酒吧按钮。

当用户双击屏幕时,我想隐藏并显示这个导航栏。

最初,导航栏应该隐藏。当用户双击屏幕时,导航栏应该会产生一个动画,就像在iPhone的照片库中可以看到的那样。

提问于
用户回答回答于

若要隐藏导航栏,请执行以下操作:

[[self navigationController] setNavigationBarHidden:YES animated:YES];

为了证明这一点:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

若要侦听“双击”或双击,请参阅子类。UIView并将该子类的一个实例作为视图控制器的实例view财产。

在视图子类中,重写其-touchesEnded:withEvent:方法,并通过测量两个连续的水龙头之间的时间来计算在一段时间内接触到的次数,也许可以用-timeIntervalSinceDate:或测试[touch tapCount]

如果有两个点击,则子类视图将发出NSNotification您的视图控制器已注册要侦听的。

当您的视图控制器听到通知时,它会激发一个选择器,该选择器使用上述代码隐藏或显示导航条,这取决于通过读取导航栏的导航条访问的导航栏的当前可见状态。isHidden财产。

编辑

我的回答中处理TAP事件的部分可能在iOS 3.1之前很有用。大UIGestureRecognizer现在,类可能是处理双击的更好方法。

编辑2

快速隐藏导航栏的方法是:

self.navigationController?.setNavigationBarHidden(true, animated: true)

为了证明这一点:

self.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];
}
}

扫码关注云+社区