[英]How to set status bar's content color to white on iOS 7
我的应用程序的背景颜色是黑色。 因为整个视图位于iOS 7上的状态栏下方,状态栏上的内容很难区分。 那么如何将状态栏的内容颜色更改为白色?
我已经尝试过preferredStatusBarStyle
和其他几种方法,但都失败了。
插入
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
to -application:didFinishLaunchingWithOptions:
AppDelegate.m。
注意 : UIStatusBarStyleDefault
是状态栏样式的默认值,它将显示黑色内容。 在iOS 7.0中不推荐使用UIStatusBarStyleBlackTranslucent
和UIStatusBarStyleBlackOpaque
。
正如@ZakariaDarwish所提到的,在iOS 9中不推荐使用方法-setStatusBarStyle
。(注意:很久以前就问过iOS 7的原始问题了,我现在不支持它,下面的新解决方案适用于iOS 9,因此在这里更新。)
因此,剩下的唯一方法( 至少现在 )是在视图控制器中实现-preferredStatusBarStyle
(记得将“基于控制器的状态栏外观视图”设置回“是” )。
您可以调用UIViewController的实例方法-setNeedsStatusBarAppearanceUpdate
一次值改变-preferredStatusBarStyle
或-prefersStatusBarHidden
。
还有两种方法-childViewControllerForStatusBarStyle
& -childViewControllerForStatusBarHidden
可以根据需要从子视图控制器返回首选样式。
例如 ,如果您使用以下方法
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
要切换状态栏样式之前,可以使用下面的代码示例
- (void)shouldChangeStatusBarStyleToLightContent:(BOOL)toLightContent
animated:(BOOL)animated
{
_shouldChangeStatusBarStyleToLightContent = toLightContent;
if (animated) {
[UIView animateWithDuration:.3f animations:^{ [self setNeedsStatusBarAppearanceUpdate]; }];
} else {
[self setNeedsStatusBarAppearanceUpdate];
}
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return (_shouldChangeStatusBarStyleToLightContent ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault);
}
现在更新解决方案。
在* -Info.plist文件中:
或者,您可以在目标的常规选项卡中将状态栏样式指定为“黑色不透明”或“黑色半透明”(在Xcode 5.0.1中)但它们是过时的值。
我在主控制器中使用它:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
这里有一个简短的解决方案来设置状态栏颜色白色
1)首先复制此行View controller-based status bar appearance
到.plist文件中并设置布尔值NO
;
2)在didFinishLaunchingWithOptions下的AppDelegate.m文件中粘贴此内容
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
或者添加.plist
iOS 9(不推荐使用的警告解决方法)
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
#ifdef __IPHONE_7_0
# define STATUS_STYLE UIStatusBarStyleLightContent
#else
# define STATUS_STYLE UIStatusBarStyleBlackTranslucent
#endif
[[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];
如果您的应用程序具有每个视图控制器的不同状态栏的内容颜色,则首选方法将实现
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
如果您需要在整个应用程序中全局更改条形图的内容颜色,请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码行
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarStyle = .lightContent
return true
}
等待设置statusBarStyle在您的应用程序使用默认的基于UIViewController的状态栏系统时不执行任何操作。 为了这
在info.list文件中将“查看基于控制器的状态栏外观”设置为NO
只是一张纸条,因为它就在那里。 如果您使用的是UINavigationController,则可以将其放入视图控制器viewDidLoad
方法中:
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
要在Swift 3中以编程方式执行此操作,请在视图控制器中的任
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
我还将plist键“查看基于控制器的状态栏外观”设置为YES。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.