首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导航栏显示/隐藏

导航栏显示/隐藏
EN

Stack Overflow用户
提问于 2010-05-28 13:55:57
回答 8查看 212.9K关注 0票数 161

我有一个应用程序与导航栏由2个栏按钮组成。当用户双击屏幕时,我想隐藏和显示此导航栏。

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

我怎么能做到这一点呢?建议总是很受欢迎的。

EN

回答 8

Stack Overflow用户

发布于 2012-12-06 18:01:49

此代码将对您有所帮助。

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];
}
}
票数 17
EN

Stack Overflow用户

发布于 2010-12-12 15:04:50

首先阅读iOS的视图控制器编程指南中关于“为导航视图采用全屏布局”的部分,以及关于自定义视图的相同部分。如果您正在尝试执行类似于Photos.app的操作,那么您可能正在使用滚动视图。请注意,“导航栏”会自动将滚动内容添加到滚动视图中,以适应导航栏(和状态栏)的高度,因此您必须在设置navigationBar的初始状态之后、视图出现之前立即将滚动视图的contentInset属性重置回零(UIEdgeInsetsZero)。

然后,如果您有一次点击切换navigationBar和/或状态栏以显示或隐藏,您需要在您的切换方法中做两件事。第一种方法似乎是在更改NavigationBar hidden属性之前保存滚动视图的contentOffset属性,然后立即将保存的值恢复为contentOffset。然后,在更改navigationBarHidden属性后,再次将contentInset属性置零为UIEdgeInsetsZero。此外,如果要切换状态栏,则需要在更改导航栏的状态之前更改其状态。

票数 16
EN

Stack Overflow用户

发布于 2013-08-05 14:25:44

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

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

要显示导航栏:

[self.navigationController setNavigationBarHidden:NO animated:YES];
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2926914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档