UIImageRenderingMode 属性详解

在iOS 7中 UIImage新增了一个只读属性renderingMode,同时增加了一个方法

-(UIImage *)imageWithRenderingMode (UIImageRenderingMode)renderingMode

用于设置image的renderingMode使用这个属性可以设置图片是否要使用当前视图的tintColor。

renderingMode有三种,以下是其枚举值

typedef NS_ENUM(NSInteger, UIImageRenderingMode) {
    UIImageRenderingModeAutomatic,         
     // Use the default rendering mode for the context where the image is used
    UIImageRenderingModeAlwaysOriginal,     
    // Always draw the original image, without treating it as a template
    UIImageRenderingModeAlwaysTemplate,     
    // Always draw the image as a template image, ignoring its color information
    } NS_ENUM_AVAILABLE_IOS(7_0)
  • UIImageRenderingModeAutomatic是图片默认的渲染模式,会根据图片的上下文自动选择渲染方式。
  • UIImageRenderingModeAlwaysOriginal设置图片始终保持原图色彩,不随tintColor的改变而改变
  • UIImageRenderingModeAlwaysTemplate是图片无视自己的色彩信息,使用追随当前视图的tintColor。

尝试一下

UIImageRenderingMode 属性详解_第1张图片
使用默认模式的image

这个按钮设计图,原图是白色,使用了默认的 UIImageRenderingModeAutomatic图片渲染方式,可以看出,此时这张图片的色彩和button的tintColor保持了一致。

UIImageRenderingMode 属性详解_第2张图片
backgroundColor和tintColor一致

在我将button背景颜色和tintColor设为相同颜色时,button中的图片并没有如我想象的将图片恢复本来的颜色。

UIImageRenderingMode 属性详解_第3张图片
UIImageRenderingModeAlwaysOriginal模式下的image

在我将图片的渲染模式设置成 UIImageRenderingModeAlwaysOriginal时,不管button的tintColor如何改变,图片始终保持其真实色彩。

UIImageRenderingMode 属性详解_第4张图片
UIImageRenderingModeAlwaysTemplate下的image

在设置了图片渲染模式为 UIImageRenderingModeAlwaysTemplate后,button中图片的颜色始终和其tintColor保持一致。

你可能感兴趣的:(UIImageRenderingMode 属性详解)