在Iphone中设置状态栏颜色

时间:2014-04-25 04:19:09

标签: iphone ios7-statusbar

您好我正在开发小型Iphone应用程序,其中我为我的导航栏提供颜色

[self.navigationController.navigationBar setTranslucent:NO];    
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];

但是因为这个我的状态栏也变成了红色。我想把它变成白色。我尝试了以下方式,但那些不适合我。

在info.plist文件中我设置了View controller-based status bar appearance = "NO"

然后在application:didFinishLaunchingWithOptions:设置[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

然后在UIViewcontroller中

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

但上述方法对我不起作用。我的导航栏和相同颜色的状态栏。我想将状态栏颜色设置为白色。我的应用程序非常简单,只有一个UIView控制器和一个导航控制器。难道我做错了什么?需要帮忙。谢谢。

1 个答案:

答案 0 :(得分:3)

UIStatusBarStyleLightContent告诉状态栏显示浅色文本,但它仍然是透明的。并且由于导航控制器将其导航栏的位置报告为UIBarPositionTopAttached,您会看到导航栏在状态栏下方的颜色拉伸效果。

以下是如何实现您所需要的两个想法:

对导航控制器进行子类化,实现- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar并返回UIBarPositionTop。这使得导航栏不会在状态栏下方拉伸,而是显示导航栏的超级视图(通常为白色)。

或者,更好的是,导航控制器的子类,在导航栏上方添加20pt高度的子视图,并在viewDidLayoutSubviews中,正确定位子视图并将其调整到方向。现在,您可以为此视图添加任何颜色,它将是状态栏的颜色。

修改:根据评论,positionForBar:方法可能无效。