全屏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); }
请按照这个代码为我工作