关于ios13 切换DarkMode 暗黑模式 tabBarItem等一些控件访问Assets资源文件不会更新

ios13的暗黑模式一出 项目经理便要求我们app支持,幸好之前加了一个 UIColor的类别   在类别里 把所有字体全部切换。但是在设置tabBarItem的时候 切换模式 我发现图片并不会发生变化,初始的时候 是OK的。这里可以发现 切换暗黑模式 并不会触发tabar更新自己的图片  所以我们需要手动触发更新 ,通常公司项目中都会自己创建一个自定义UITabBarController,我们只需在这个TabBarController里 加上监听回调方法即可,代码如下:

- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {

    [super traitCollectionDidChange:previousTraitCollection];

    if(@available(iOS13.0, *)) {

        if ([self.traitCollection hasDifferentColorAppearanceComparedToTraitCollection:previousTraitCollection]) {

            // 执行操作

            NavigetionViewController *navVC =  self.childViewControllers.lastObject;

            UIViewController * VC = navVC.childViewControllers.firstObject;

            VC.tabBarItem.image= [UIImage imageWithOriginal:@"我的图标"];

        }

    }

}

通过TabBarController的childViewControllers 找到NavigetionViewController对象,又通过 NavigetionViewController的childViewControllers找到要修改的VC,从而修改VC的tabBarItem。


你可能感兴趣的:(关于ios13 切换DarkMode 暗黑模式 tabBarItem等一些控件访问Assets资源文件不会更新)