我的应用程序的背景颜色是黑色。由于 iOS 7 上整个视图都在状态栏下方,因此很难区分状态栏上的内容。那么如何将状态栏的内容颜色改为白色呢?
我尝试preferredStatusBarStyle
了其他几种方法,但都失败了。
我的应用程序的背景颜色是黑色。由于 iOS 7 上整个视图都在状态栏下方,因此很难区分状态栏上的内容。那么如何将状态栏的内容颜色改为白色呢?
我尝试preferredStatusBarStyle
了其他几种方法,但都失败了。
插入
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
到-application:didFinishLaunchingWithOptions:
AppDelegate.m。
注意:UIStatusBarStyleDefault
是状态栏样式的默认值,它将显示黑色内容。&在 iOS 7.0 中已弃用UIStatusBarStyleBlackTranslucent
。UIStatusBarStyleBlackOpaque
正如@ZakariaDarwish 所提到的,该方法-setStatusBarStyle
在iOS 9 中已弃用。(注意:最初的问题是很久以前针对iOS 7 提出的,我现在不支持它,下面的新解决方案适用于我在iOS 9 下,因此更新这里。)
因此,剩下的唯一方法(至少现在)是-preferredStatusBarStyle
在您的视图控制器中实现(记住将“基于视图控制器的状态栏外观”设置回YES)。
一旦在或中-setNeedsStatusBarAppearanceUpdate
更改值,您就可以调用 UIViewController 的实例方法。-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 文件中并设置 Boolean NO
;
2) 在你的AppDelegate.m文件中的didFinishLaunchingWithOptions下粘贴这个
[[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
}
如果您的应用程序使用默认的基于 UIViewController 的状态栏系统,请等待设置 statusBarStyle。为了这
在 info.list 文件中将“查看基于控制器的状态栏外观”设置为 NO
只是一个注释,因为它在那里。如果您使用的是 UINavigationController,则可以将其放入视图控制器viewDidLoad
方法中:
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
要在 Swift 3 中以编程方式执行此操作,请在视图控制器中的任何位置尝试此操作。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
我还将 plist 键“查看基于控制器的状态栏外观”设置为 YES。