1.设置seleectedImage和image
2.这时候,会发现,不管你怎么弄,只会显示颜色不会正常显示图片,那是因为没有设置图片的renderingMode属性:
UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。
UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
设置选中图片和未选中图片的renderingMode属性为:
for (UITabBarItem *item in self.tabBar.items) {
item.selectedImage = [item.selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//item.title
}
这样就可以正常显示了!
- 改变文字的颜色:先点击下图所选位置
然后在下图出修改 ,bar tint是设置这个tabbar的背景色,下面的tint就可以设置所想要字体的颜色了
补充:代码设置tabbar item的文字颜色?
初始化视图控件
- (void)initView {
NSMutableArray *imageArray = [[NSMutableArray alloc] initWithObjects:Imageone, ImageAccounttwo, ImageSecuritythree ImagePromotionfour, nil];
self.selectedIndex = 2;
for (UITabBarItem *item in self.tabBar.items) {
// 设置 TabBar Item 被选中图标的模式
item.selectedImage = [[UIImage imageNamed:[imageArray firstObject]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[imageArray removeObjectAtIndex:0];
// 设置 TabBar Item 被选中图标的字体颜色
if (self.selectedIndex == [self.tabBar.items indexOfObject:item]) {
[item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:kUIColorWithHex(0x549ACC), NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
} else {
[item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:kUIColorWithHex(0x999999), NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
}
}
}
补充 : 当点击某个item的时候,会调用代理方法,然后再更改tabbar item 的字体颜色
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
// 设置 TabBar Item 默认的字体颜色
for (UITabBarItem *item in self.tabBar.items) {
[item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:kUIColorWithHex(0x999999), NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
}
// 设置 TabBar 被选中 Item 的字体颜色
[item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:kUIColorWithHex(0x549ACC), NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
}