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。