在storyboard中拖的UITabBarController,设置选中时的图片和字体颜色
/**
* 设置tabbar选中时的图片和字体颜色(storyboard情况下)
*
* @param tabBarController tabBarController
*/
- (void)setTabbarSelectImage:(UITabBarController *)tabBarController {
// 方法一:
NSArray *itemImageArray = @[@"首页new选中",@"运单管理new选中",@"我的new选中"];
NSArray *itemArray = tabBarController.tabBar.items;
for (NSInteger i = 0; i < itemArray.count; i++) {
UITabBarItem *item = itemArray[i];
UIImage *image = IMAGENAMED(itemImageArray[i]);
[item setTitleTextAttributes:@{NSForegroundColorAttributeName:UIColorFrom16RGB(0x66B2D4)} forState:UIControlStateSelected];
item.selectedImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
// 方法二:
for (UITabBarItem *item in tabBarController.tabBar.items) {
NSString *selectedImageStr;
if (item.tag == 1) {
selectedImageStr = @"首页new选中";
} else if (item.tag == 2) {
selectedImageStr = @"运单管理new选中";
} else {
selectedImageStr = @"我的new选中";
}
UIImage *image = IMAGENAMED(selectedImageStr);
[item setTitleTextAttributes:@{NSForegroundColorAttributeName:UIColorFrom16RGB(0x66B2D4)} forState:UIControlStateSelected];
item.selectedImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
}
调用:直接在tabBarController的第一个ViewController的viewDidLoad调用即可,传入当前的tabBarController
例如 :[ self setTabbarSelectImage:self.tabBarController];
注意的是方法二,需要你自己去storyboard中设置每个item的tag值,另外附上方法中用到的宏定义;
// 根据16位RBG值转换成颜色,格式:UIColorFrom16RGB(0xFF0000)
#define UIColorFrom16RGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
// 根据10位RBG值转换成颜色, 格式:KLColorFrom10RBG(255,255,255)
#define UIColorFrom10RGB(RED, GREEN, BLUE) [UIColor colorWithRed:RED/255.0 green:GREEN/255.0 blue:BLUE/255.0 alpha:1.0]
//定义UIImage对象
#define IMAGENAMED(_pointer) [UIImage imageNamed:_pointer]