使 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;

[已编辑] 在 vi​​ewDidLoad 中添加点击手势

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 消失

旋转更改后 UINavigationBar 消失

用户使用 Firebase 注销后,根控制器 UINavigationBar 消失

UINavigationBar 在另一个视图继续时消失?

苹果笔记本丢失鼠标指针