使 UINavigationBar 在触摸时消失和出现,模仿 iOS 上的 safari

Making the UINavigationBar Disappear and Appear on a touch, mimicking safari on iOS

我有一个从 UITableViewController 调用的 UIPageViewController,它向用户显示一系列图像。

图片包含很多信息,虽然一直 UINavigationBar 没有意义,因为它只是用来分享图片或返回,但有没有办法在 iOS 上模仿 Safari,其中顶部的 UINavigationBar 消失并在触摸时重新出现?

我没有尝试过任何东西,因为老实说,我不知道从哪里开始做这样的事情。是否有第三方开源框架,或者是否有一种简单的方法来制作动画?也许在 viewDidLoad 中,在 UINavigationBar 上有一个计时器,在开始时显示它并在 2 秒后消失,等等,然后在触摸时重新出现?

任何关于这方面的指导将不胜感激。

试试这个代码

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

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

iOS 8 提供默认功能

self.navigationController.hidesBarsOnTap = true;

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

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHandle:)];
[self.view addGestureRecognizer:tapRecognizer];

将以下方法添加到您的 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];
        }
    });
}