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。

尝试一下

使用默认模式的image

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

backgroundColor和tintColor一致

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

UIImageRenderingModeAlwaysOriginal模式下的image

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

UIImageRenderingModeAlwaysTemplate下的image

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容