1

我有一个显示全屏的视图控制器,并且可以从视图控制器显示另一个模态 VC,模态 VC 需要状态栏,但是在关闭模态 VC 控制器后,基本 VC 顶部有状态栏空间,并且即使我设置:

[[UIApplication sharedApplication] setStatusBarHidden:YES]

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

谢谢

4

2 回答 2

3

试试这个:

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

来自 applicationFrame 上的文档:

此属性包含屏幕边界减去状态栏占用的区域(如果可见)。使用此属性是检索应用程序初始窗口大小的推荐方法。矩形以点为单位指定。

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

-application:willChangeStatusBarFrame:
-application:didChangeStatusBarFrame:

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

  • UIApplicationWillChangeStatusBarFrameNotification
  • UIApplicationDidChangeStatusBarFrameNotification
于 2013-03-18T00:40:53.043 回答
0

我已经尝试过您的方法,但它对我不起作用,我以这种方式解决了它,当模态 VC 关闭时,在viewDidAppear基本 VC 中我需要:

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

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

于 2013-03-18T23:28:01.210 回答