我已将导航栏颜色和状态栏颜色设置为相等,但仍然以不同方式显示。我为导航栏和状态栏设置了RGB颜色。
[UIColor colorWithRed:(61.0/255.0) green:(101.0/255.0) blue:(188.0/255.0) alpha:1.0];
但状态栏输出仍然不同。
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
view.backgroundColor = [UIColor colorWithRed:(61.0/255.0) green:(101.0/255.0) blue:(188.0/255.0) alpha:1.0];
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
[delegate.window.rootViewController.view addSubview:view];
}
答案 0 :(得分:0)
设置navigationController.navigationBar.translucent = NO;
正如文档所说:
iOS 7上的新行为。 默认为YES。 您可以通过将属性设置为NO来强制使用不透明背景。 如果导航栏具有自定义背景图像,则会推断出默认值 如果它具有alpha<的任何像素,则从图像的α值开始。 1.0 如果您将setTranslucent:YES发送到具有不透明自定义背景图像的栏 它会将小于1.0的系统不透明度应用于图像。 如果您将setTranslucent:NO发送到具有半透明自定义背景图像的栏 它将使用条形图的barTintColor(如果已定义)或黑色为图像提供不透明背景 如果barTintColor为零,则为UIBarStyleBlack或白色为UIBarStyleDefault。
答案 1 :(得分:0)
要更改状态栏颜色,我们需要像这样的uiview获取状态栏
guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return false }
然后更改视图的背景颜色
statusBar.backgroundColor = UIColor.rgb(red: 194, green: 31, blue: 31)
现在状态栏在图像中看起来像这样
提供导航栏颜色很简单
UINavigationBar.appearance().barTintColor = UIColor.rgb(red: 230, green: 32, blue: 31)