使 UINavigationBar 消失和出现在触摸,模仿 iOS 上的 safari
Posted
技术标签:
【中文标题】使 UINavigationBar 消失和出现在触摸,模仿 iOS 上的 safari【英文标题】:Making the UINavigationBar Disappear and Appear on a touch, mimicking safari on iOS 【发布时间】:2015-07-08 12:12:38 【问题描述】:我有一个从UITableViewController
调用的UIPageViewController
,它向用户显示了一系列图像。
图像包含大量信息,虽然一直使用UINavigationBar
没有意义,因为它只是用于共享图像,或者返回,但是有没有办法在 Safari 上模仿ios,顶部的UINavigationBar
会消失然后再出现?
我没有尝试过任何事情,因为我真的不知道从哪里开始这样的事情。是否有第三方开源框架,或者一种简单的动画方法?也许在 viewDidLoad 中,在UINavigationBar
上有一个计时器,在开始时显示并在 2 秒后消失,等等,然后在触摸时重新出现?
对此的任何指导将不胜感激。
【问题讨论】:
您可以使用点击手势来显示/隐藏 UINavigationbar 【参考方案1】:iOS 8 提供默认功能
self.navigationController.hidesBarsOnTap = true;
[已编辑] 在 viewDidLoad 中添加点击手势
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHandle:)];
[self.view addGestureRecognizer:tapRecognizer];
将Following方法添加到您的viewController
- (void)tapHandle:(UITapGestureRecognizer*)sender
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^
if (self.navigationController.navigationBarHidden == NO)
[[self navigationController] setNavigationBarHidden:YES animated:YES];
else
[[self navigationController] setNavigationBarHidden:NO animated:YES];
);
【讨论】:
欲了解更多默认功能,您可以点击以下链接:natashatherobot.com/navigation-bar-interactions-ios8 Apple 开发者文档 -> 从此 developer.apple.com/library/ios/documentation/UIKit/Reference/… 中找到“隐藏导航栏” Pavan - 非常感谢您的回复。那一行代码真是太棒了,它就像一个魅力。现在有一个计时器,我该怎么做?这样view显示的时候,显示bar,2秒后隐藏? 请不要使用这个 self.navigationController.hidesBarsOnTap = true;两秒钟后隐藏导航,使用编辑的答案。它可以满足您的需要。 非常感谢 Pavan - 这非常完美而且很有帮助!感谢您对此提供的帮助。【参考方案2】:试试这个代码
[[self navigationController] setNavigationBarHidden:YES animated:YES];
[[self navigationController] setNavigationBarHidden:NO animated:YES];
【讨论】:
感谢 Nikunj - 这很有帮助! 另一个答案更合适以上是关于使 UINavigationBar 消失和出现在触摸,模仿 iOS 上的 safari的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar 与 UISearchDisplayController 和 UISearchBar 一起消失
从 UIActivityViewController 关闭邮件后 UINavigationBar 消失