iOS 13 状态栏样式、暗黑模式
iOS 13系统的iPhone 在设置--》显示与亮度 --》选择深色 即开启暗黑模式
1. 暗黑模式关闭
1.1 APP开发未进行暗黑适配,出现顶部状态栏字体颜色无法改变始终为白色。可以全局关闭暗黑模式: 在 Info.plist 文件中,添加 key 为 User Interface Style
,类型为 String,value 设置为 Light
即可。
1.2在 iOS 13中,UIView、UIViewController 、UIWindow 有了一个 overrideUserInterfaceStyle 的新属性,可以覆盖系统的模式。
单个页面或视图关闭暗黑模式,设置 overrideUserInterfaceStyle 为对应的模式,强制限制该视图与其子视图以设置的模式进行展示,不跟随系统模式改变进行改变。
1 self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
1.3 iOS 13 中UIStatusBarStyle的枚举做了调整。
*之前开发的APP代码中 UIStatusBarStyle 的部分样式需要根据自需要修改
1 typedef NS_ENUM(NSInteger, UIStatusBarStyle) { 2 UIStatusBarStyleDefault = 0, // Automatically chooses light or dark content based on the user interface style 暗黑下浅色内容; 3 UIStatusBarStyleLightContent = 1, // Light content, for use on dark backgrounds 浅色内容,用于深色背景 4 UIStatusBarStyleDarkContent = 3, // Dark content, for use on light backgrounds 深色内容,用于浅色背景 5 };
2. 更状态栏颜色方法
在info.plist文件中 View controller-based status bar appearance
-> YES,则控制器对状态栏设置的优先级高于application
-> NO,则以application为准,控制器设置状态栏prefersStatusBarHidden是无效的
-> YES,则控制器对状态栏设置的优先级高于application
-> NO,则以application为准,控制器设置状态栏prefersStatusBarHidden是无效的
2.1 View controller-based status bar appearance -> NO
1 //默认样式 2 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; 3 //隐藏 4 [UIApplication sharedApplication].statusBarHidden = YES;
2.2 View controller-based status bar appearance -> YES 或者info.plist文件中没有设置
1 //设置样式 2 - (UIStatusBarStyle)preferredStatusBarStyle { 3 return UIStatusBarStyleLightContent; 4 } 5 6 //设置是否隐藏 7 - (BOOL)prefersStatusBarHidden { 8 return NO; 9 } 10 11 //设置隐藏动画 12 - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { 13 return UIStatusBarAnimationNone; 14 }
3. 获取状态栏高度
1 [UIApplication sharedApplication].statusBarFrame.size.height