全屏UIView与状态栏和导航栏叠加在上面

什么是正确的方式来实现状态栏和导航栏上的UIView顶部?

替代文字http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png

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

self.wantsFullScreenLayout = YES; 

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

状态栏使用

 [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent]; 

导航栏使用

 theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

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

 [self.navigationController.view setNeedsLayout]; 

隐藏状态栏后。 但我个人认为

 [self setWantsFullScreenLayout:YES]; 

是一个更好的方法。

我想出的最好的方法是:当使用包含导航控制器的“复杂”选项卡栏的层次结构时,一个“细节”视图是全屏视图。

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

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

这将使标签栏控制器覆盖整个屏幕,甚至低于状态栏的区域。 我必须抵消几个视图的高度+ 20px,特别是导航栏。

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

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

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

然后在完成启动选项中添加以下代码

 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); } 

请按照这个代码为我工作