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是无效的
 

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

 

 

 



posted @ 2020-04-06 13:13  奶瓶瓶🍼  阅读(2133)  评论(0编辑  收藏  举报