在 UITabBar 控制器上设置图像

Posted

技术标签:

【中文标题】在 UITabBar 控制器上设置图像【英文标题】:Set Image on UITabBar Controller 【发布时间】:2015-06-26 10:09:12 【问题描述】:

我已经开发了有 5 个标签的标签栏基础应用程序,我正在尝试在每个标签上设置图像。所以我使用了 xcode 提供的 inbuid 功能来设置图像,但我没有得到我想要的确切结果。

这是我的 TabBar 控制器

在这种情况下,我得到的是灰色图像,但我的实际图像不是灰色的,而是彩色图像。所以请任何人有解决这个问题的解决方案。我想将图像设置为我拥有的 reties。

【问题讨论】:

How to change inactive icon/text color on tab bar?的可能重复 【参考方案1】:

ios 7 开始,您可以选择将应用中的任何图像视为模板(或模板)图像。当您选择将图像视为模板时,系统会忽略图像的颜色信息并根据图像中的 alpha 值创建图像模板。 UIImage 有一个名为renderingMode 的新属性,默认呈现模式为UIImageRenderingModeAutomatic。根据我的经验,它通常意味着像图像这样的模板,所以当你初始化你的图像时,你需要

UIImage *image = [UIImage imageNamed:@"someimage"];
UIImage *thisoneshouldbeused = [image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]

有关更多信息,请参阅 UIKit 用户界面目录中的模板图像

【讨论】:

【参考方案2】:

@Inertiatic 有一个很好的答案,请使用-imageWithRenderingMode:

NSArray *images = @[@"[FIRST IMAGE]", @"[SECOND IMAGE]", …];
NSArray *selectedImages = @[@"[FIRST SELECTED IMAGE]", @"[SECOND SELECTED IMAGE]", …];

UITabBarController *tabBarController = (id)self.window.rootViewController;

for (NSInteger i = 0; i < tabBarController.tabBar.items.count; ++i) 
    UITabBarItem *item in tabBarController.tabBar.items[i];

    item.image = [[UIImage imageNamed:images[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item.selectedImage = [[UIImage imageNamed:selectedImages[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

【讨论】:

以上是关于在 UITabBar 控制器上设置图像的主要内容,如果未能解决你的问题,请参考以下文章

UItabbar 项目未显示情节提要参考

项目第二天

UITabbar在iPad和iPhone上出现Chang

UITabBar 显示 UITabBarItem 图像忽略渲染模式 AlwaysOriginal

我们如何创建一个更大的中心 UITabBar 项

设置UITabBar的标题