【发布时间】:2015-06-26 10:09:12
【问题描述】:
我已经开发了有 5 个标签的标签栏基础应用程序,我正在尝试在每个标签上设置图像。所以我使用了 xcode 提供的 inbuid 功能来设置图像,但我没有得到我想要的确切结果。
这是我的 TabBar 控制器
在这种情况下,我得到的是灰色图像,但我的实际图像不是灰色的,而是彩色图像。所以请任何人有解决这个问题的解决方案。我想将图像设置为我拥有的 reties。
【问题讨论】:
我已经开发了有 5 个标签的标签栏基础应用程序,我正在尝试在每个标签上设置图像。所以我使用了 xcode 提供的 inbuid 功能来设置图像,但我没有得到我想要的确切结果。
这是我的 TabBar 控制器
在这种情况下,我得到的是灰色图像,但我的实际图像不是灰色的,而是彩色图像。所以请任何人有解决这个问题的解决方案。我想将图像设置为我拥有的 reties。
【问题讨论】:
从 iOS 7 开始,您可以选择将应用中的任何图像视为模板(或模板)图像。当您选择将图像视为模板时,系统会忽略图像的颜色信息并根据图像中的 alpha 值创建图像模板。 UIImage 有一个名为renderingMode 的新属性,默认呈现模式为UIImageRenderingModeAutomatic。根据我的经验,它通常意味着像图像这样的模板,所以当你初始化你的图像时,你需要
UIImage *image = [UIImage imageNamed:@"someimage"];
UIImage *thisoneshouldbeused = [image imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]
有关更多信息,请参阅 UIKit 用户界面目录中的模板图像
【讨论】:
@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];
}
【讨论】: