我有一个应用程序与导航栏由2个栏按钮组成。当用户双击屏幕时,我想隐藏和显示此导航栏。
最初,导航栏应该是隐藏的。当用户双击屏幕时,导航栏应该会弹出一个动画,就像在iPhone的照片库中看到的那样。
我怎么能做到这一点呢?建议总是很受欢迎的。
发布于 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];
}
}
发布于 2010-12-12 15:04:50
首先阅读iOS的视图控制器编程指南中关于“为导航视图采用全屏布局”的部分,以及关于自定义视图的相同部分。如果您正在尝试执行类似于Photos.app的操作,那么您可能正在使用滚动视图。请注意,“导航栏”会自动将滚动内容添加到滚动视图中,以适应导航栏(和状态栏)的高度,因此您必须在设置navigationBar的初始状态之后、视图出现之前立即将滚动视图的contentInset属性重置回零(UIEdgeInsetsZero)。
然后,如果您有一次点击切换navigationBar和/或状态栏以显示或隐藏,您需要在您的切换方法中做两件事。第一种方法似乎是在更改NavigationBar hidden属性之前保存滚动视图的contentOffset属性,然后立即将保存的值恢复为contentOffset。然后,在更改navigationBarHidden属性后,再次将contentInset属性置零为UIEdgeInsetsZero。此外,如果要切换状态栏,则需要在更改导航栏的状态之前更改其状态。
发布于 2013-08-05 14:25:44
要隐藏导航栏,请执行以下操作:
[self.navigationController setNavigationBarHidden:YES animated:YES];
要显示导航栏:
[self.navigationController setNavigationBarHidden:NO animated:YES];
https://stackoverflow.com/questions/2926914
复制相似问题