【发布时间】:2014-09-27 18:03:15
【问题描述】:
我正在尝试通过将 statusBar、navigationBar 和 tabBar 隐藏在一起,使我的应用在用户点击时在单个视图中“全屏”。
我可以很好地隐藏和显示导航栏和状态栏,但是在隐藏 tabBar 时我遇到了一些问题。
这是隐藏之前的样子:
这是隐藏后的:
隐藏时,tabBar 会留下一个空白点,我试图隐藏但没有成功。
这是我目前正在使用的代码
-(void)toggleBars:(UITapGestureRecognizer *)gesture{
//Hide navigationBar
BOOL toggleNavigationBar = self.navigationController.navigationBarHidden;
[self.navigationController setNavigationBarHidden:!toggleNavigationBar animated:YES];
//Hide tabBar - not hiding, leaving a black spot
BOOL toggleTabHidden = self.tabBarController.tabBar.hidden;
[self.tabBarController setTabBarHidden:!toggleTabHidden];
//Hide statusBar
BOOL statusBarHidden = [UIApplication sharedApplication].statusBarHidden;
[[UIApplication sharedApplication] setStatusBarHidden:!statusBarHidden withAnimation:UIStatusBarAnimationSlide];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate){
[self setNeedsStatusBarAppearanceUpdate];
}
}
我用谷歌搜索了很多,甚至在 SO 上查找了这里,但我没有找到任何可以帮助我的东西。
从视觉上看,这就是我想要实现的目标
---------------- --------------
|navBar &statbar| | |
|--------------- | |
| | tap | |
| content | -----> | content only |
| | |in fullscreen |
| | | |
|-------------- | | |
| tabbar | | |
------------- --------------
TL;DR
我想让我的应用在点击时全屏显示,我想知道如何删除 tabBar 在隐藏时留下的空白点。
提前致谢。
编辑 1
我在this question 中关注了Sebastian Keller 的回答,空白的tabBar 现在被隐藏了,但是动画有点大车而且不流畅。
编辑 2
创建一个虚拟项目后,我重新制作了 Storyboard,我注意到问题在于,当 tabBar 设置为不透明时,它会留下空白栏。这在设置为半透明时不适用。
【问题讨论】:
-
您在使用自动布局吗?我想我可能会为您提供解决方案。
-
是的,我正在使用自动布局。
标签: ios objective-c uitabbar