iOS:如何在解除需要状态栏的模态VC后隐藏状态栏?

时间:2013-03-18 00:27:35

标签: ios objective-c

我有一个全屏显示的视图控制器,并且从视图控制器可以呈现另一个模态VC,模态VC需要状态栏,但在解除模态VC控制器后,基本VC有状态栏的空间顶部,甚至我设置:

[[UIApplication sharedApplication] setStatusBarHidden:YES]

状态栏是隐藏但是空间仍然存在,我检查了基础VC视图的帧,它从0开始,我不认为我应该让它的y坐标从-20开始,但我还能做些什么呢?

由于

2 个答案:

答案 0 :(得分:3)

试试这个:

[[UIApplication sharedApplication] setStatusBarHidden:NO];
self.view.frame = [[UIScreen mainScreen] applicationFrame];

来自applicationFrame上的文档:

  

此属性包含屏幕边界减去占用的区域   状态栏,如果可见。使用此属性是   建议的方法来检索应用程序的初始窗口大小。   矩形以点数指定。

要获得更强大的解决方案,请更改框架以响应状态栏框架更改。您的应用程序委托子类可以实现:

-application:willChangeStatusBarFrame:
-application:didChangeStatusBarFrame:

或者,您可以使用NSNotificationCenter注册这些通知:

  • UIApplicationWillChangeStatusBarFrameNotification
  • UIApplicationDidChangeStatusBarFrameNotification

答案 1 :(得分:0)

我已经尝试过你的方法,但它对我不起作用,我用这种方式解决了它,当模态VC解散时,在基础VC的viewDidAppear我需要:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
self.wantsFullScreenLayout = YES;
[self.view layoutSubviews];

我知道这不是一个好的解决方案,但这是我现在唯一能想到的,无论如何,谢谢你的帮助。