在我们的应用程序中,我们以编程方式动态使用自定义UITabBarItem(请参见下文)。我们使用ImageAssets获得正确的暗/亮图像。但这并不能100%地起作用:如果我们重新启动应用程序,就可以了。如果iOS切换为暗模式且应用程序正在运行,则图像将保持亮模式。想知道这是一个错误还是我现在可以使它工作...
UIImage * mImage = [UIImage imageNamed:@“ tabBar1”]; UIImage * mImageSel = [UIImage imageNamed:@“ tabBar1Sel”];
mImage = [mImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
mImageSel = [mImageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:mImage selectedImage:mImageSel];
UIEdgeInsets titleInsets = UIEdgeInsetsMake(-6, 0.0, -6.0, 0.0);
self.tabBarItem.imageInsets = titleInsets;
没有显示错误消息...
答案 0 :(得分:3)
以编程方式创建的UITabBarItems会遇到相同的问题。
我们尝试在UIViewController.traitCollectionDidChange(:)中重新创建TabBarItem,问题仍然存在。好像是苹果的虫子。值得注意的是,该问题仅对我们而言适用于SelectedImage。默认的未选择状态似乎尊重UIUserInterfaceStyle的更改(暗模式)。
我们找到了一个临时解决方案:如果您将相同的selectedImage重新分配给UIViewController.traitCollectionDidChange(:)中的myViewController.tabBarItem,则会解决此问题。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
self.tabBarItem.selectedImage = mySelectedImage //same image asset that was used in the initializer
}
不确定为什么可以解决它,但对我们有用。