我创建了一个自定义导航栏,我需要将状态栏的颜色更改为与导航栏的背景颜色相同:
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;
}
但它不起作用。有人可以帮忙吗?
答案 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];