Objective-C UITabBarItem:使用 UIImageRenderingModeAlwaysOriginal 为所有状态自定义图标颜色

Objective-C UITabBarItem: Custom Icon Color for All States with UIImageRenderingModeAlwaysOriginal

我希望我的标签栏项目在所有状态下都具有原始图标颜色。我无法在 IB 中做到这一点,所以我设法以编程方式更改它们:

for (int i=0; i<[_tabBar.subviews count]; i++) {
    UITabBarItem * item = (UITabBarItem*)[_tabBar.subviews objectAtIndex:i];
    UIImage *image = [[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item.image = image;
    //item.selectedImage = image; //CRASH :(
}

但是,我无法设置 item.selectedImage = image;。这导致崩溃。选中图片状态和其他状态如何设置?

您可以在 .xcassets 文件夹中设置图像的渲染模式。

只需在属性检查器中从 "Render as" select "Original Image"。更改后,您可以简单地 select 您想要的图像 "Image" 和 "Selected image" 在您的标签栏图像的情节提要中。该图像在 Storyboard 中将显示为灰色,但会在您的应用运行时正常呈现。

像您这样遍历视图层次结构是非常不寻常的。