最近在学Swift,把之前做过的OC项目重新用Swift实现。在此过程中发现很多知识点都遗忘了,所以开始记录下这些零散的知识点,以便自己以后回顾,同时也希望帮到有需要的童鞋。
今天来说说UITabBarController中图片渲染的问题.iOS7之后,UITabBar上的按钮只要选中,就会默认被渲染(如图-1所示)。
这是因为iOS7中给UITarBar增加了一个属性tintColor,它默认是蓝色。解决UITabBar上的按钮渲染,有三种方法。
方法一,直接在Assets.xcassets中处理:在Assets.xcassets中选中要去渲染的图片,将”Image Set”中的”Render As”选项设置为”Original Image”(如图-2所示)。这个方法操作起来很简单,但是当我们需要修改的图片很多的时候就得不断地点点点,比较麻烦。
方法二,在UITabBarController控制器中修改UITarBar的“tintColor”属性值,如“图-3”所示,本文中的代码都是用Swift编写的。假如你的图片和示例图片一样是单一的颜色,那么可以用苹果自带的数码测色计获得RGB值(如图-4所示),注意将RGB值传入时要除以“255”,因为UIColor接收的RGB值的取值范围是“0”到“1”。假如你使用的图片不是简单的单一颜色,那么这个方法就帮不到你了,看下一个方法。
方法三,通过代码修改图片的渲染模式:Swift中UIImage有一个修改图片渲染模式的方法”withRenderingMode”,通过这个方法将图片的渲染模式设置为”alwaysOriginal”,始终绘制图片原始状态,这样同样能解决渲染问题,如“图-5”所示。
有童鞋会有疑问说用“方法三”每次加载一个图片就要给它修改一下渲染模式,不是和“方法一”同样麻烦吗,的确是这样。我的解决方案是给UIImage扩展一下,例如给它一个命名为“imageNamedWithOriginal”的类方法,将“方法三”的实现封装到这个类方法中,之后每当加载图片的时候直接用我们定义的这个类方法。扩展的代码如“图-6”所示,加载图片时的代码如“图-7”所示。
以上是今天的一点小小的总结,如有纰漏,欢迎交流指正。