在iOS 9中设置状态栏和导航栏颜色相同

时间:2017-02-28 11:56:20

标签: ios uinavigationcontroller statusbar

我已将导航栏颜色和状态栏颜色设置为相等,但仍然以不同方式显示。我为导航栏和状态栏设置了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]; 
}

2 个答案:

答案 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)

现在状态栏在图像中看起来像这样

Statusbar with Color

提供导航栏颜色很简单

UINavigationBar.appearance().barTintColor = UIColor.rgb(red: 230, green: 32, blue: 31)

总体上,这将使状态栏和导航栏看起来像这样 Status bar and nav bar color