全屏UIView,状态栏和导航栏覆盖在顶部

时间:2008-12-17 06:23:53

标签: objective-c iphone

实现UIView之上的状态栏和导航栏的正确方法是什么?

alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png

6 个答案:

答案 0 :(得分:45)

在视图控制器中设置“想要全屏布局”。这解决了我的问题。

self.wantsFullScreenLayout = YES;

答案 1 :(得分:23)

在上面的屏幕截图中,有一个半透明的状态栏和一个半透明的导航栏。

状态栏使用

设置
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];

使用

设置导航栏
theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

答案 2 :(得分:14)

如果您在导航控制器中有一个视图控制器,并且您想要隐藏状态栏以便全屏显示您的viewController视图,您可以随时调用:

[self.navigationController.view setNeedsLayout];
隐藏状态栏后

。 但我个人认为

[self setWantsFullScreenLayout:YES];

是一种更好的方式。

答案 3 :(得分:4)

我提出的最佳方式是:当使用包含导航控制器的标签栏的“复杂”层次结构时,一个“详细”视图是全屏视图。

在标签栏控制器视图添加到窗口之前的应用程序委托中,我添加了这个:

tabBarController.view.frame = [[UIScreen mainScreen] bounds];

这将使标签栏控制器覆盖整个屏幕,甚至低于状态栏的区域。我不得不将几个视图的高度偏移到+ 20px,尤其是导航栏。

答案 4 :(得分:0)

将状态栏样式设置为黑色半透明,将导航栏样式设置为黑色半透明。如果您使用的是基于导航的应用程序,请在MainWindow.xib中检查状态栏是否隐藏,导航栏是隐藏的复选框。

当用户触摸屏幕时,启动计时器以查看这是单击还是双击。如果单击,则使状态栏和导航栏隐藏=否。一旦用户活动停止,再次启动计时器。经过一段时间没有活动,再次隐藏它们。

答案 5 :(得分:0)

步骤1在plist中将UIViewControllerBasedStatusBarAppearance设置为No

然后在did finish launch选项中添加以下代码

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

请按照此代码为我工作