我只想启用/禁用每个视图控制器的状态栏(某些视图全屏,有些不是)
我已经多次通过与状态栏20像素问题相关的所有帖子,但仍有问题,特别是在iOS5.0上(一些技巧)适用于较旧的iOS版本):
以下是问题定义:
我使用[[UIApplication sharedApplication] setStatusBarHidden:YES]
隐藏状态栏
如果我这样做,我总是有20像素高度的白色空白区域
我尝试启用/停用 导航栏来强制布局,这在iOS 5上无效:
[self.navigationController setNavigationBarHidden:NO animated:NO];
[self.navigationController setNavigationBarHidden:YES animated:NO];
我尝试手动重置视图框大小,无需更改
self.view.frame=CGRectMake(0, 0, 320, 480);
我尝试手动更改导航容器视图:
self.navigationController.frame=CGRectMake(0, 0, 320, 480);
所有视图当然都是480像素高度
答案 0 :(得分:4)
在要向其显示StatusBar的视图控制器的viewWillAppear中使用以下方法。
[[UIApplication sharedApplication]setStatusBarHidden:YES];
声明一个BOOL变量,指示在视图控制器中加载视图时是否隐藏状态栏,您希望隐藏状态栏并将其值设置为NO。
BOOL statusBarHidden = NO;
然后在视图控制器的viewWillAppear中添加以下代码(状态栏隐藏在此视图中)
[[UIApplication sharedApplication] setStatusBarHidden:YES];
if(statusBarHidden == NO)
{
self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, 0.0, -20.0);
statusBarHidden = YES;
}
答案 1 :(得分:1)
我想,你想隐藏状态栏并使用导航栏在全屏幕中设置视图控制器然后使用
[self.navigationController.view setNeedsLayout];
其他方法用于你想要隐藏状态栏....
[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:NO];
[self wantsFullScreenLayout];