在运行中以编程方式更改 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
如何在向下滑动 UIWebView 以修复 iOS7 状态栏覆盖问题后更改 UIWebView 背景颜色?