如何在iOS7中更改状态栏颜色

时间:2015-06-11 03:49:34

标签: ios statusbar navigationbar

我创建了一个自定义导航栏,我需要将状态栏的颜色更改为与导航栏的背景颜色相同:

tag_list

我试过了:

- (void)drawRect:(CGRect)rect {
    CGFloat logoWidth = CGRectGetWidth([self frame]) / 4;
    CGFloat logoHeight =CGRectGetHeight([self frame]) / 2;
    [kAPPLogo drawInRect:CGRectMake((CGRectGetWidth([self frame]) - logoWidth) / 2, (CGRectGetHeight([self frame]) - logoHeight) / 2, logoWidth, logoHeight)];

    self.barTintColor = kNavicationBarColor;
    self.backgroundColor = kNavicationBarColor;
}

但它不起作用。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

状态栏背景颜色是透明的,因此无需更改它的内容颜色只有白色和黑色两种颜色。要更改它的内容颜色,请覆盖方法preferredStatusBarStyle,如下所示

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

viewDidLoad

中调用此方法

即使这样你想改变状态栏的背景颜色,你也可以通过以下代码来实现:

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
statusBar.backgroundColor = [UIColor blueColor];

答案 1 :(得分:0)

没有直接的方法来更改状态栏颜色。我们可以使用setStatusBarStyle属性选择状态栏样式,并从三种可用样式中进行选择:

UIStatusBarStyleDefault
UIStatusBarStyleBlackTranslucent
UIStatusBarStyleBlackOpaque

但是,如果您更改UIWindow对象的背景颜色并将状态栏样式设置为UIStatusBarStyleBlackTranslucent,则会将状态栏的颜色设置为与窗口的背景颜色相同。

将以下代码添加到AppDeligate.m

中的applicationDidFinishLaunchingWithOptions文件中
self.window.backgroundColor = kNavicationBarColor;
[application setStatusBarStyle:UIStatusBarStyleBlackTranslucent];