UITabBarController中图片渲染问题

        最近在学Swift,把之前做过的OC项目重新用Swift实现。在此过程中发现很多知识点都遗忘了,所以开始记录下这些零散的知识点,以便自己以后回顾,同时也希望帮到有需要的童鞋。

        今天来说说UITabBarController中图片渲染的问题.iOS7之后,UITabBar上的按钮只要选中,就会默认被渲染(如图-1所示)。

图-1

         这是因为iOS7中给UITarBar增加了一个属性tintColor,它默认是蓝色。解决UITabBar上的按钮渲染,有三种方法。

        方法一,直接在Assets.xcassets中处理:在Assets.xcassets中选中要去渲染的图片,将”Image Set”中的”Render As”选项设置为”Original Image”(如图-2所示)。这个方法操作起来很简单,但是当我们需要修改的图片很多的时候就得不断地点点点,比较麻烦。

图-2

        方法二,在UITabBarController控制器中修改UITarBar的“tintColor”属性值,如“图-3”所示,本文中的代码都是用Swift编写的。假如你的图片和示例图片一样是单一的颜色,那么可以用苹果自带的数码测色计获得RGB值(如图-4所示),注意将RGB值传入时要除以“255”,因为UIColor接收的RGB值的取值范围是“0”到“1”。假如你使用的图片不是简单的单一颜色,那么这个方法就帮不到你了,看下一个方法。

图-3


图-4

        方法三,通过代码修改图片的渲染模式:Swift中UIImage有一个修改图片渲染模式的方法”withRenderingMode”,通过这个方法将图片的渲染模式设置为”alwaysOriginal”,始终绘制图片原始状态,这样同样能解决渲染问题,如“图-5”所示。

图-5

        有童鞋会有疑问说用“方法三”每次加载一个图片就要给它修改一下渲染模式,不是和“方法一”同样麻烦吗,的确是这样。我的解决方案是给UIImage扩展一下,例如给它一个命名为“imageNamedWithOriginal”的类方法,将“方法三”的实现封装到这个类方法中,之后每当加载图片的时候直接用我们定义的这个类方法。扩展的代码如“图-6”所示,加载图片时的代码如“图-7”所示。

图-6


图-7

        以上是今天的一点小小的总结,如有纰漏,欢迎交流指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容