如何在一个ViewController中刷新preferredStatusBarStyle两次或更多次

时间:2016-06-08 07:57:36

标签: xcode colors ios9 statusbar

我的旧代码:

- (void)setStatusBarLight:(BOOL)value {
    if (value) {
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    } else {
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
    }
}

现在不推荐使用setStatusBarStyle。 Apple说,我应该使用 preferredStatusBarStyle 。但这只召唤一次。但在我的选项中,状态栏必须在此视图控制器中的某些用户操作后更改颜色。

我该怎么办?

2 个答案:

答案 0 :(得分:12)

这是一个解决方案:

SELECT *
FROM tl_products 
WHERE preisbevor > preis 
ORDER BY updatetime DESC
LIMIT 25

在Info.plist中查看基于控制器的状态栏外观设置为

答案 1 :(得分:0)

以下是一个具有深色navBar和白色statusBar文本的视图控制器,以及一个呈现浅navBar和黑色statusBar文本的视图控制器的示例:

vc1(深色导航栏,白色statusBar文本)

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self setNeedsStatusBarAppearanceUpdate];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleDefault;
}

vc2(浅色导航栏,黑色statusBar文本)

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self setNeedsStatusBarAppearanceUpdate];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

打开/显示vc2和statusBar文本将更改其颜色

- (void)openVC2 {
    UIViewController *vc = [[UIViewController alloc]init];
    UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:vc];
    [nvc.navigationBar setNavBarColor:COLOR_gray_light ShadowColor:[UIColor clearColor]];
    [self presentViewController:nvc animated:YES completion:nil];
}

信息:setNavBarColor:ShadowColor:是我类别中的自定义方法

别忘了在您的info.plist上将View controller-based status bar appearance设置为YES