如何改变状态栏上模态访问的iOS 6

问题描述:

我有以下星座:如何改变状态栏上模态访问的iOS 6

主视图(自定义的UIViewController,没有navigationcontroller或导航栏),含有一个按钮,模态塞格斯到第二表视图控制器,这是嵌入导航控制器:

的MainView - >导航器 - > TableView中

在的MainView状态栏是黑色(与iOS 6没有改变 - 即使在状态栏设置为默认值) 在TableViewController状态栏应该具有默认样式(iOS 5中为灰色,Blu e由于iOS 6中的导航栏而着色)。

在iOS 5中,这是容易通过的代码在TableViewController下列行:

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

iOS 6的下运行该注意到发生的情况。我怎样才能做到这一点?我尝试了所有可能的状态栏设置下的项目总结和plist(像这里描述:https://*.com/a/12468689/1685971

此外,在故事板一切看起来不错。运行在模拟器或设备上的应用程序,它看起来不同: StoryboardSimulator

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

1)设定导航栏为0

2α值)设置条的y位置到-43px(看这里:http://moduscreate.com/tinting-your-status-bar-in-ios6-and-phonegap/

编辑:

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

+0

即使功能状态栏着色不是Apple完全实施的。您的解决方案是一种解决方法。干净的解决方案应该是应用程序检查每个视图控制器上的状态栏色调 - 不仅在第一个视图控制器上。 – FrankZp

第一视图控制器必须具有功能起作用导航控制器/酒吧。 状态栏不会改变整个应用程序的颜色(在iOS6中),但会适应您启动视图时的导航栏颜色。如果您的起始视图不包含导航栏,则状态栏不适应颜色。 (请参阅http://i.stack.imgur.com/n9ubK.png

+0

是这个新功能选择顶部导航栏的颜色来为状态栏着色。但是这里的要求是,第一个视图控制器没有导航栏。在iOS 5中,这可以通过上面的代码实现。但在iOS 6中,状态栏不可更改! – FrankZp

+1

_在TableViewController上,状态栏应该有默认样式(iOS 5中为灰色,由于iOS 6中的导航栏而出现蓝色)._这种假设是错误的。 –

+0

上面显示的代码将TableViewController上的状态栏设置为默认样式。这适用于iOS5 - 不适用于iOS6(状态栏保持黑屏 - 请参阅模拟器屏幕截图)。 – FrankZp

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

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

导航控制器 - >栏隐藏= YES - > 的MainView - >栏隐藏=没有 - > TableView中

+0

问题是,模式显示TableViewController。因此,MainViewController和TableViewController不能嵌入到同一个导航控制器中(请参阅故事板屏幕截图)。当使用两个导航控制器(一个用于MainView和一个用于TableView)时,上面描述的问题保持不变... – FrankZp