顶部带有状态栏和导航栏覆盖的全屏UIView

问题描述:

实现位于UIView顶部的状态栏和导航栏的正确方法是什么?顶部带有状态栏和导航栏覆盖的全屏UIView

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

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

状态栏使用

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent]; 

导航栏设置为使用

theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
+0

如何隐藏顶部和底部的酒吧,如果它是视图控制器中的uiwebview? – thndrkiss 2010-08-19 19:31:52

+1

这在iPhone Simulator 3.2上不适用于我。从Xcode文档:“已弃用,使用'UIBarStyleBlack`并将半透明属性设置为'YES`。”这工作! :) – ma11hew28 2010-09-27 00:06:08

+0

当这写的(2008年12月),这是正确的方式。当然,随着时间的推移,API确实会改变。你的方法现在是正确的。 – August 2010-10-15 20:18:12

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

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

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

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

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

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

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

self.wantsFullScreenLayout = YES; 

如果你有一个导航控制器内的视图控制器,你要隐藏,才能有你的viewController在全屏视图的状态栏,可以随时拨打:

[self.navigationController.view setNeedsLayout]; 

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

[self setWantsFullScreenLayout:YES]; 

是一个更好的方法。

步骤1将UIViewControllerBasedStatusBarAppearance为否在plist中

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

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

请点击此代码,它为我工作