iOS 深度好文经验之谈

UIImageRenderingMode 属性详解

2017-11-19  本文已影响42人  桑夏君

在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)

尝试一下

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

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

UIImageRenderingModeAlwaysOriginal模式下的image
在我将图片的渲染模式设置成UIImageRenderingModeAlwaysOriginal时,不管button的tintColor如何改变,图片始终保持其真实色彩。 UIImageRenderingModeAlwaysTemplate下的image
在设置了图片渲染模式为UIImageRenderingModeAlwaysTemplate后,button中图片的颜色始终和其tintColor保持一致。
上一篇 下一篇

猜你喜欢

热点阅读