试图隐藏iPhone状态栏白色空间

时间:2009-12-10 04:19:09

标签: iphone

我有一个UIImage的滚动视图,UIImage有自己的视图控制器类 并且滚动视图位于主根控制器上。我将隐藏状态栏方法添加到根控制器,但是当我运行程序时,状态栏消失但是留下空白区域,视图不会在状态栏空白区域上增长。我厌倦了其他方法,但我仍然得到相同的空白区域我也试图启用滚动垂直,看起来状态栏位于我的所有视图的顶部,当我向上滚动它继续在状态栏下。

导致这种情况的原因是什么?

3 个答案:

答案 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;
顺便说一句:在我的情况下,我需要重新计算框架并使其适应可见的状态栏。