一、系统 Tabbar 默认颜色(如下图):
TabbarItem默认渲染颜色.png
代码详见(如下):
- (void)viewDidLoad { [super viewDidLoad]; HQHomeController *vcHome = [[HQHomeController alloc] init]; HQHomeNavigationController *navHome = [[HQHomeNavigationController alloc] initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"]; HQCourseController *vcCourse = [[HQCourseController alloc] init]; HQCourseNavigationController *navCourse = [[HQCourseNavigationController alloc] initWithRootViewController:vcCourse]; vcCourse.title = @"健康课程"; vcCourse.tabBarItem.image = [UIImage imageNamed:@"tabbar_message_center_highlighted"]; HQConsultController *vcConsult = [[HQConsultController alloc] init]; HQConsultNavigationController *navConsult = [[HQConsultNavigationController alloc] initWithRootViewController:vcConsult]; vcConsult.title = @"线上资讯"; vcConsult.tabBarItem.image = [UIImage imageNamed:@"tabbar_discover"]; HQProfileController *vcProfile = [[HQProfileController alloc] init]; HQProfileNavigationController *navProfile = [[HQProfileNavigationController alloc] initWithRootViewController:vcProfile]; vcProfile.title = @"个人中心"; vcProfile.tabBarItem.image = [UIImage imageNamed:@"tabbar_profile"]; self.viewControllers = @[navHome, navCourse, navConsult, navProfile]; }
设置 tabbarItem 图片(显示图片原始颜色,不让系统渲染成蓝色)如(如下图):
没有被系统tabbar渲染的图片.png
代码详见(如下):
HQHomeController *vcHome = [[HQHomeController alloc] init]; HQHomeNavigationController *navHome = [[HQHomeNavigationController alloc] initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage imageNamed:@"tabbar_home_highlighted"]; imageHome = [imageHome imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [vcHome.tabBarItem setSelectedImage:imageHome];
设置 tabbarItem 文字(显示自定义文字颜色,不让系统渲染成蓝色)如(如下图):
没有被系统tabbar渲染的文字.png
代码详见(如下):
HQHomeController *vcHome = [[HQHomeController alloc] init]; HQHomeNavigationController *navHome = [[HQHomeNavigationController alloc] initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage imageNamed:@"tabbar_home_highlighted"]; imageHome = [imageHome imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [vcHome.tabBarItem setSelectedImage:imageHome]; // 设置 tabbarItem 选中状态下的文字颜色(不被系统默认渲染,显示文字自定义颜色) NSDictionary *dictHome = [NSDictionary dictionaryWithObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName]; [vcHome.tabBarItem setTitleTextAttributes:dictHome forState:UIControlStateSelected];
简单的封装下(详见代码):
回到刚才位置调用一下:
HQHomeController *vcHome = [[HQHomeController alloc] init]; HQHomeNavigationController *navHome = [[HQHomeNavigationController alloc] initWithRootViewController:vcHome]; // 下面注释的代码用这一行就可以替代了 [self controller:vcHome Title:@"首页" tabBarItemImage:@"tabbar_home" tabBarItemSelectedImage:@"tabbar_home_highlighted"]; // vcHome.title = @"首页"; // vcHome.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"]; // // // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) // UIImage *imageHome = [UIImage imageNamed:@"tabbar_home_highlighted"]; // imageHome = [imageHome imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; // [vcHome.tabBarItem setSelectedImage:imageHome]; // // // 设置 tabbarItem 选中状态下的文字颜色(不被系统默认渲染,显示文字自定义颜色) // NSDictionary *dictHome = [NSDictionary dictionaryWithObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName]; // [vcHome.tabBarItem setTitleTextAttributes:dictHome forState:UIControlStateSelected];
对比如图:
代码封装对比.png
二、修改 tabBarItem 图片方法二(直接设置文件夹下图片渲染模式)(见下图):
在图片所在文件夹中设置图片渲染模式为图片原始模式(不被渲染).png
1.代码中注释了修改图片被渲染的模式 2.图片文件夹中也是默认渲染模式 3.效果见下图
代码中不设置图片渲染模式效果.png
在图片所在文件夹中设置图片的渲染模式(见下图)
在文件夹中设置图片渲染模式.png
特别感谢 Oniityann 大神给我提醒,整理出来,方便大家查看!
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句