在运行中以编程方式更改 iOS7 状态栏颜色?

Posted

技术标签:

【中文标题】在运行中以编程方式更改 iOS7 状态栏颜色?【英文标题】:Change iOS7 Status Bar Colour programmatically, mid-run? 【发布时间】:2014-03-16 15:31:28 【问题描述】:

我正在尝试在运行中更改状态栏颜色,即不是在加载控制器时。我更改了视图的背景颜色,因此我需要将其从黑色更改为白色,反之亦然。

我知道我可以使用preferredStatusBarStyle 和 plist 中的设置来更改它,但据我所知,这只会在第一次启动视图控制器时设置它。例如,当我按下按钮时,我想更改它。

我可以这样做吗?

【问题讨论】:

【参考方案1】:

转到您的应用程序 Plist 并将其添加为新行并将其设置为 NO。

View controller-based status bar appearance  NO

添加一个布尔值来确定UIStatusBar 颜色的状态并添加一个切换方法

@property(nonatomic) BOOL black;


-(void)toggleStatuSBar:(id)sender

    if(black) 
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
        black = NO;

    else 
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
        black = YES;
    

这是一个示例截图

菜单关闭时,颜色为白色。

菜单打开时颜色为黑色

希望对您有所帮助。

【讨论】:

这样你就可以独立改变viewController的StatusBar了。 这在 ios 9 中已被弃用。现在重写 UIViewController 方法是唯一的方法吗?这并不理想。 @Arcrammer :我在一年多前回复了原始帖子,当时 API 运行良好。最好编辑答案并添加新的 api 代码。【参考方案2】:

从 Swift 3 开始:

    转到您的应用程序 Plist 并将其添加为新行并将其设置为 NO。

View controller-based status bar appearance NO

2.

白:UIApplication.shared.statusBarStyle = .lightContent

黑色:UIApplication.shared.statusBarStyle = .default

【讨论】:

以上是关于在运行中以编程方式更改 iOS7 状态栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

如何在 iOS 7 上更改状态栏背景颜色和文本颜色?

如何在向下滑动 UIWebView 以修复 iOS7 状态栏覆盖问题后更改 UIWebView 背景颜色?

在 Safari 和 Chrome 中更改 iOS 7 状态栏的颜色

打开 MFSideMenu 时如何更改状态栏颜色

如何在 iOS 中更改状态栏文本颜色