我有一个显示全屏的视图控制器,并且可以从视图控制器显示另一个模态 VC,模态 VC 需要状态栏,但是在关闭模态 VC 控制器后,基本 VC 顶部有状态栏空间,并且即使我设置:
[[UIApplication sharedApplication] setStatusBarHidden:YES]
状态栏被隐藏但空间仍然存在,我检查了基础VC的视图框架,它从0开始,我认为我不应该让它的y坐标从-20开始,但是还有什么我可不可以做?
谢谢
我有一个显示全屏的视图控制器,并且可以从视图控制器显示另一个模态 VC,模态 VC 需要状态栏,但是在关闭模态 VC 控制器后,基本 VC 顶部有状态栏空间,并且即使我设置:
[[UIApplication sharedApplication] setStatusBarHidden:YES]
状态栏被隐藏但空间仍然存在,我检查了基础VC的视图框架,它从0开始,我认为我不应该让它的y坐标从-20开始,但是还有什么我可不可以做?
谢谢
试试这个:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
self.view.frame = [[UIScreen mainScreen] applicationFrame];
来自 applicationFrame 上的文档:
此属性包含屏幕边界减去状态栏占用的区域(如果可见)。使用此属性是检索应用程序初始窗口大小的推荐方法。矩形以点为单位指定。
要获得更强大的解决方案,请更改您的框架以响应状态栏框架的更改。您的应用程序委托子类可以实现:
-application:willChangeStatusBarFrame:
-application:didChangeStatusBarFrame:
或者,您可以使用 NSNotificationCenter 注册这些通知:
我已经尝试过您的方法,但它对我不起作用,我以这种方式解决了它,当模态 VC 关闭时,在viewDidAppear
基本 VC 中我需要:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
self.wantsFullScreenLayout = YES;
[self.view layoutSubviews];
我知道这不是一个好的解决方案,但这是我目前唯一能想到的,无论如何感谢您的帮助。