在项目中遇到过一个这样的小问题:UI给出了一个灰色箭头图标,但在有的界面上让显示的是白色箭头图标;最初第一反应是让UI再出一张白色箭头的图标,然而偶然机会发现了UIImage的渲染,巧妙的解决了这一问题,在此做一个随笔记录,仅供参考。
Tint Color是iOS7界面中的一个,UIImage的API中有这样一个只读属性:renderingMode,对应的方法:imageWithRenderingMode:,而这个imageWithRenderingMode是专为UIImage的渲染模式而设计的。我们可通过设置一个UIImage的renderingMode来确定在渲染时是否使用当前视图的Tint Color,即主要是通过UIImageRenderingMode枚举值来设置图片的renderingMode属性。
三种不同枚举值分别代表的含义如下:
1.UIImageRenderingModeAutomatic :根据图片的使用环境和所处的绘图上下文自动调整渲染模式
2.UIImageRenderingModeAlwaysOriginal :始终绘制图片原始状态,不使用Tint Color
3.UIImageRenderingModeAlwaysTemplate : 始终根据Tint Color绘制图片,忽略图片的颜色信息。
默认情况下renderingMode属性的默认值是UIImageRenderingModeAutomatic,即UIImage是否使用Tint Color取决于它显示的位置。下面我们分别对UIImageRenderingModeAlwaysOriginal、UIImageRenderingModeAlwaysTemplate做个举例说明:
即在设置图片渲染时,绘制图片back的原始状态,在本例中既定的图片通过设置为UIImageRenderingModeAlwaysOriginal对应以下效果:
即在设置图片渲染时,通过设置Tint Color绘制图片颜色,忽略图片的颜色信息,在本例中设置UIImageRenderingModeAlwaysTemplate对应以下效果: