美文网首页
iOS13适配 禁掉系统dark模式

iOS13适配 禁掉系统dark模式

作者: wustzhy | 来源:发表于2020-06-24 16:11 被阅读0次

苹果6.30后就不让使用Xcode11以下打包了(iOS12 SDK),虽然这几天提审不受影响,但还是切到Xcode11.1处理下吧,这时就要需要处理一些东东了。尤其是 dark模式,iOS13 SDK下适配。

1、黑夜模式禁调(强制设为原白色系风格);

Q: 当变化dark模式时 有些界面会自动系统处理为白色
A: AppDelegate中,强制设定为以前的白色系 UIUserInterfaceStyleLight

// 禁iOS13的调黑夜模式. warning: 在Xcode11及以上 放开以下注释
    if (@available(iOS 13.0, *)) {
        //强制设为iOS13之前默认的系统风格(白色系)
        self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
        //fix: dark模式下 状态栏变白 导致看不清了
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent;
    }

2、tabbar字体颜色;

Q:选中tabbar的某bar时字体变白色 看不清了
A:

    if (@available(iOS 13.0, *)) {
        // titColor就是选中的颜色,iOS13后默认的颜色是灰色,所以一般不需要设置默认颜色
        self.tabBar.tintColor = kColor(@"#FF4A4A");
        //如果需要设置默认颜色可以使用setUnselectedItemTintColor来设置未选中颜色
        [self.tabBar setUnselectedItemTintColor:kColor(@"#505050")];
    } else {
        // set the text color for unselected state
        NSMutableDictionary *normalAttrs = [NSMutableDictionary dictionary];
        normalAttrs[NSForegroundColorAttributeName] = kColor(@"#505050");
        
        // set the text color for selected state
        NSMutableDictionary *selectedAttrs = [NSMutableDictionary dictionary];
        selectedAttrs[NSForegroundColorAttributeName] = kColor(@"#FF4A4A");
        
        // set the text Attributes
        UITabBarItem *tabBar = [UITabBarItem appearance];
        [tabBar setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
        [tabBar setTitleTextAttributes:selectedAttrs forState:UIControlStateSelected];
    }

3、状态栏内容颜色;
Q: 若简单的处理为 UIStatusBarStyleDefault,那么如果黑夜模式下 当前控制器(状态栏)背景色是白色,此时状态栏会自动由系统 根据黑夜模式 处理为 UIStatusBarStyleLightContent(内容白色),导致只能看到模糊的电池了。
A:

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    if (@available(iOS 13.0, *)) {
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent;
    } else {
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
    }
}

相关文章

网友评论

      本文标题:iOS13适配 禁掉系统dark模式

      本文链接:https://www.haomeiwen.com/subject/htnrfktx.html