iOS状态栏自动更改颜色以匹配导航栏

时间:2013-03-29 22:45:30

标签: iphone ios objective-c cocoa-touch uinavigationcontroller

我的AppDelegate中有一个UINavigationController,它有一个带有UITableView的RootViewController。启动时,状态栏会将其颜色更改为导航栏的颜色。当我将导航栏上色为橙色时,这就是状态栏的样子:

enter image description here

似乎我的导航栏稍微向上移动了一下。导航控制器似乎无法识别状态栏。我该如何解决这个问题?

我在我的应用程序中唯一拥有的是AppDelegate和一个空的RootViewController。我的application:didFinishLaunchingWithOptions是:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[navigationController.navigationBar setTintColor:[UIColor orangeColor]];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;

我的RootViewController的IB文件只有一个空视图。

没什么不寻常的。我对iOS很有经验,这就是我每次都这样做的方式。我不知道这次有什么不同。

有人可以告诉我吗?感谢

3 个答案:

答案 0 :(得分:6)

将状态栏样式设置为UIStatusBarStyleBlackOpaque,你应该得到一个坚固的黑条。

为此,请在应用程序的实例上使用setStatusBarStyle:animated:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque 
                                            animated:NO];

答案 1 :(得分:4)

在iOS 6.0中,状态栏会更改颜色以匹配导航栏(如果有)。这是预期的行为。

答案 2 :(得分:2)

添加此代码:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

这会使状态栏再次变黑。

您应该在更改导航栏的颜色后添加