如何以编程方式更改PreferredStatusBarStyle

ika*_*imo 3 objective-c statusbar uistatusbar ios7

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

这是代码:

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

然后,当我按下按钮动作是:

[self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)

但这不起作用!

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

rdo*_*gan 11

setStatusBarStyle:animated:已被弃用.在iOS9中,您可以使用preferredStatusBarStyle和实现相同的功能setNeedsStatusBarAppearanceUpdate.

在View Controller中:

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

    return .Default
}
Run Code Online (Sandbox Code Playgroud)

当你的病情发生变化时:

self.setNeedsStatusBarAppearanceUpdate()
Run Code Online (Sandbox Code Playgroud)


小智 6

在Swift 4上:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助其他人找到这篇文章。