具有半透明导航栏的状态栏背景颜色

时间:2016-01-29 22:09:09

标签: ios objective-c iphone ios8 ios9

所以我正在抨击看似简单的问题......

我正在尝试使我的应用中的状态栏具有背景颜色。现在我遇到的问题是我有:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

这意味着文字将是白色的。这很好,但问题来自于我运行应用程序并使用它。我有一个嵌入在标签栏控制器中的导航控制器(带有一个tableview),这样当你向下滚动标题时就会消失。想想与Facbook,LinkedIn等类似的功能。

所以现在发生的事情就是当我滚动状态栏是半透明的白色文字时...因此不可读。

所以我想我可以按如下方式添加子视图:

UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20);
addStatusBar.backgroundColor = [UIColor orangeColor];
[self.window.rootViewController.view addSubview:addStatusBar];

这似乎有用,但颜色不对......所以我不得不将半透明属性从导航栏上移开:

self.navigationController.navigationBar.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
self.navigationController.navigationBar.translucent = NO;

这意味着现在颜色仍然存在,但它不对,当我滚动时你可以看出顶部有一个视图而不是导航栏中的文字“淡化”到顶部(如Facebook和LinkedIn)

我在这里缺少什么?有没有办法访问statusBar.backgroundColor ??

感谢您的帮助。

A

1 个答案:

答案 0 :(得分:1)

你的plist中找不到“UIViewControllerBasedStatusBarAppearance”属性,但默认情况下不存在。您必须通过单击+按钮自行添加它,然后将其设置为“NO”。

添加到.plist后,您必须转到AppDelegate.m文件并在didFinishLaunchingWithOptions方法中添加以下内容,添加以下代码行:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    UIView *addStatusBar = [[UIView alloc] init];
    addStatusBar.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20);
    addStatusBar.backgroundColor = [UIColor orangeColor];

YourViewController *vc = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@“YourViewController"];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:vc];

self.window.rootViewController = tabBarControllerObj;
[self.window.rootViewController.view addSubview:addStatusBar];

我希望这对你有帮助。