我有一个UIImage的滚动视图,UIImage有自己的视图控制器类 并且滚动视图位于主根控制器上。我将隐藏状态栏方法添加到根控制器,但是当我运行程序时,状态栏消失但是留下空白区域,视图不会在状态栏空白区域上增长。我厌倦了其他方法,但我仍然得到相同的空白区域我也试图启用滚动垂直,看起来状态栏位于我的所有视图的顶部,当我向上滚动它继续在状态栏下。
导致这种情况的原因是什么?
答案 0 :(得分:7)
你只是隐藏了状态栏,似乎其他组件没有自动扩展来接管那个空间。确保在主根控制器下的所有组件中启用了“自动调整大小子视图”。
如果这没有帮助,您可以尝试在代码中重新定位和调整视图大小。类似的东西:
CGRect frame = self.view.frame;
frame.origin.y -= statusBar.height;
frame.size.height += statusBar.height;
self.view.frame = frame;
答案 1 :(得分:2)
我有同样的问题,我可以通过添加对
的调用来修复它// Where self == Your View Controller with the status bar hidden
[self setWantsFullScreenLayout:YES];
然后我将它放在View Controller的init方法中,其中隐藏了状态栏。然后我将以下代码添加到视图中加载或视图将加载方法。
if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:hide withAnimation:NO];
} else { // Deprecated in iOS 3.2+.
id sharedApp = [UIApplication sharedApplication]; // Get around deprecation warnings.
[sharedApp setStatusBarHidden:hide animated:NO];
}
这将允许您拥有一个状态栏和一个没有状态栏的视图控制器。照片应用程序就是这样做的。
答案 2 :(得分:0)
只需跟进JOM有用的解决方案,并提供动态statusBar高度(没有人应该依赖状态栏为20px表示评论):
// fix frame
CGRect frame = window.frame;
if( ! [UIApplication sharedApplication].statusBarHidden ) {
int statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
frame.origin.y += statusBarHeight;
frame.size.height -= statusBarHeight;
}
self.view.frame = frame;
顺便说一句:在我的情况下,我需要重新计算框架并使其适应可见的状态栏。