使 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;
[已编辑] 在 viewDidLoad 中添加点击手势
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];
}
});
}
我有一个从 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;
[已编辑] 在 viewDidLoad 中添加点击手势
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];
}
});
}