14

我有以下星座:

主视图(自定义 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 中,一切看起来都很好。在模拟器或设备上运行应用程序,它看起来不同: 故事板 模拟器

4

3 回答 3

6

试试这个“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]。

于 2013-02-17T18:37:39.133 回答
2

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

于 2012-09-29T05:13:56.600 回答
0

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

试试这个方法。1. 将导航控制器添加到主视图。2. 将其属性 hidden 设置为 yes。3.显示tableviewcontroller时,设置导航栏属性hidden为No

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

于 2012-10-01T01:29:37.827 回答