我们都知道iOS开发中,如果给TabBar的标签设置了自定义的图标之后,TabBar图标默认会被渲染成蓝色。
iOS中UIImage的渲染模式有三种:
- UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式,默认就是蓝色
- UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color
- UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息
为了自定义图标样式,一般开发中会选择采取下列步骤:
1. 在Assets.xcassets中,选中图标图片,修改渲染模式为Original
2. 分别设置修改tabBarItem.image和tabBarItem.selectedImage的图片
也可以在代码中这样来修改RanderingMode:
tabBarItem.selectedImage = [selImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
如果UI只给了你原图标和一个RGB颜色值而没有SelectedMode模式下渲染好的图标。
那怎么修改TabBar选中图标和字体的颜色呢?
苹果的渲染效果是比较美观的,我们只两行代码就可以实现上述效果了:
在AppDelegate的didFinishLaunchingWithOptions:中,添加两行代码
[[UITabBar appearance] setSelectedImageTintColor:KTabBarColor];
[[UITabBar appearance] setTintColor:KTabBarColor];
tada!~:
用上面两行代码,不需要修改图片的RanderingMode。
但是系统给我们报了一个⚠️警告说该方法setSelectedImageTintColor:在iOS8.0已经过期了,用TintColor.
于是我们把第一句代码删掉了,但是效果是这样的:
这时,我们想起了图片的渲染模式中的最后一种,只要我们把RanderingMode改成Template Image,就大功告成了!
用一行代码修改TabBar的图标和文字的渲染颜色。