为啥ios中的状态栏和导航栏背景颜色不同
Posted
技术标签:
【中文标题】为啥ios中的状态栏和导航栏背景颜色不同【英文标题】:why Status bar and Navigation bar background colors are different in ios为什么ios中的状态栏和导航栏背景颜色不同 【发布时间】:2014-08-14 14:54:06 【问题描述】:我想更改状态栏的背景颜色,并且该背景颜色应与导航栏背景颜色相同,即深灰色。我的问题是使用下面的代码为状态栏和导航栏提供相同的颜色后,我得到了不同的颜色。我已经将 UIViewControllerBasedStatusBarAppearance 设置为 NO。请建议我在哪里做错了,我附上了下面的图片供您参考。
这是我的 App 委托代码 - didFinishLaunchingWithOptions:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//For changing status bar background color
self.window.backgroundColor = [UIColor darkGrayColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
//For changing navigation bar background color
[[UINavigationBar appearance] setBackgroundColor:[UIColor darkGrayColor]];
[[UINavigationBar appearance] setTintColor:[UIColor darkGrayColor]];
【问题讨论】:
UIStatusBarStyleLightContent
和 [UIColor darkGrayColor]
一样吗?
sry.. 我附上截图供您参考。
【参考方案1】:
它们有不同颜色的原因是因为UIStatusBarStyleLightContent
与[UIColor darkGrayColor]
的颜色不同。
如果按照状态栏的样子调整导航栏颜色就可以了,那么你可以设置状态栏颜色:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
找出状态栏的 RGB 值。 (比如我用的是DigitalColor Meter,它说它有R:28, G: 28, B: 28)。
然后你可以这样做:
[[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:28/255.0 green:28/255.0 blue:28/255.0 alpha:1.0f]];
您可能需要将半透明设置为NO
。
如果您只想在某些屏幕上使用它,可以将其添加到 viewDidLoad
方法中:
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:28/255.0 green:28/255.0 blue:28/255.0 alpha:1.0f]];
【讨论】:
感谢@Lord Zsolt,我已经对我的代码进行了更改。现在我得到了类似bg颜色的东西。你能告诉我是否需要将 bg 颜色设置为 [UIColor colorWithRed:(51/255.0) green:(51/255.0) blue:(51/255.0) alpha:1.0]];那么 UINavigationBar 的 bg 和 tint 颜色应该是什么? 这就是我所说的“如果可以根据状态栏设置导航栏颜色”。状态栏有一些预设颜色,之后你必须调整导航栏,反之则不然。 okey..现在我的状态栏和导航栏都使用相同的背景颜色,但我不知道为什么我在状态栏和导航栏之间有一条黑色的小分隔线。请检查我更新的问题(我已附上屏幕截图)。请建议我..谢谢 @YogeshSuthar感谢您的回答..我已经尝试过,但它仅适用于黑色背景色,不适用于任何其他颜色。 @AnandGautam 删除所有用于设置 statusBarBGColor 和 navigationcontroller BG 颜色的代码,然后尝试我的代码。我刚刚检查了 yellowColor,它工作正常。【参考方案2】:首先在你的 VC 的 viewDidLoad 方法中更改 statusBar 样式
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
然后在 VC 的 viewDidLoad 方法中将 BarTintColor
更改为您想要的颜色
[self.navigationController.navigationBar setBarTintColor:[UIColor blackColor]];
【讨论】:
【参考方案3】:在您的 AppDelegate
的“didFinishLaunchingWithOptions:”中添加以下内容,它应该可以工作。
[[UINavigationBar appearance] setBarTintColor:[UIColor darkGrayColor]];
【讨论】:
以上是关于为啥ios中的状态栏和导航栏背景颜色不同的主要内容,如果未能解决你的问题,请参考以下文章