如何在模态视图iOS 6上更改状态栏

时间:2012-09-20 12:34:28

标签: statusbar ios6

我有以下星座:

主视图(自定义UIViewController,无导航控制器或导航栏),包含一个按钮,该按钮以模态方式分段到第二个表视图控制器,该控制器嵌入在导航控制器中:

MainView - >导航控制器 - >的TableView

在MainView上状态栏为黑色(iOS 6无变化 - 即使状态栏设置为默认值) 在TableViewController上,状态栏应该具有默认样式(在iOS 5中为灰色,由于iOS 6中的导航栏,为蓝色)。

在iOS 5中,通过TableViewController中的以下代码行很容易实现:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarStyle:)]) {
   [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}

在iOS 6下运行此操作会发生。我怎样才能做到这一点?我在项目摘要和plist中尝试了所有可能的状态栏设置(如下所述:https://stackoverflow.com/a/12468689/1685971

另外,在Storyboard中一切都很好看。在模拟器或设备上运行应用程序看起来不同: Storyboard Simulator

3 个答案:

答案 0 :(得分:5)

试试这个“hack”: 您必须向第一个视图控制器添加导航栏。那么你有两种可能性。

1)将导航栏的alpha值设置为0

2)将条形的y位置设置为-43px(查看此处:http://moduscreate.com/tinting-your-status-bar-in-ios6-and-phonegap/

编辑:

要获得正确的颜色,您必须设置不可见UINavigationBar的tintColor。因此默认设置为黑色。在按钮操作中,您必须将tintColor设置为navigationController.navigationBar.tintColor。在关闭按钮的操作中,您需要将其设置回[UIColor blackColor]。

答案 1 :(得分:2)

第一个视图控制器必须具有导航控制器/栏才能使该功能正常工作。 状态栏不会在整个应用中更改颜色(在iOS6中),但会适应您开始查看的导航栏颜色。如果您的起始视图不包含导航栏,则状态栏不会调整颜色。 (见http://i.stack.imgur.com/n9ubK.png

答案 2 :(得分:0)

您不必将导航栏的样式设置为tableviewcontroller。

尝试这种方法。 1.将导航控制器添加到主视图。 2.将其属性隐藏为yes。 3.显示tableviewcontroller时,将隐藏的导航栏属性设置为否

导航控制器 - > bar hidden = yes - >  MainView - > bar hidden = no - >的TableView