preferredStatusBarStyle

preferredStatusBarStyle

我想通过按下按钮将状态栏的颜色从白色更改为黑色, 仅在单个 ViewController 中以编程方式

这是代码:

- (UIStatusBarStyle)preferredStatusBarStyle {
    NSLog(@"PreferredStatusBarStyle");
    if(nav_bar.alpha==1)
    {
        NSLog(@"->UIStatusBarStyleBlackOpaque");
        return UIStatusBarStyleBlackOpaque;
    }
    else
    {
        NSLog(@"->UIStatusBarStyleLightContent");
        return UIStatusBarStyleLightContent;
    }}

然后当我按下按钮时, Action 是:
[self setNeedsStatusBarAppearanceUpdate];

但是 这不起作用!

当我按下按钮日志时,根据 navbar.alpha 写入正确的状态,但状态栏文本颜色保持 UIStatusBarStyleBlackOpaque 就像 View 出现时一样。

最佳答案

setStatusBarStyle:animated: 已被弃用。在 iOS9 中,您可以使用 preferredStatusBarStylesetNeedsStatusBarAppearanceUpdate 实现相同的目的。

在您的 View Controller 中:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    if (condition) {
        return .LightContent
    }

    return .Default
}

然后当您的病情发生变化时:
self.setNeedsStatusBarAppearanceUpdate()

10-08 16:54