美文网首页
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