在iOS 7中 UIImage新增了一個只讀屬性renderingMode
,同時(shí)增加了一個方法
-(UIImage *)imageWithRenderingMode (UIImageRenderingMode)renderingMode
用于設(shè)置image的renderingMode
皱炉。 使用這個屬性可以設(shè)置圖片是否要使用當(dāng)前視圖的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
是圖片默認(rèn)的渲染模式洒敏,會根據(jù)圖片的上下文自動選擇渲染方式。 -
UIImageRenderingModeAlwaysOriginal
設(shè)置圖片始終保持原圖色彩趴生,不隨tintColor的改變而改變 -
UIImageRenderingModeAlwaysTemplate
是圖片無視自己的色彩信息阀趴,使用追隨當(dāng)前視圖的tintColor昏翰。
嘗試一下
使用默認(rèn)模式的image
這個按鈕設(shè)計(jì)圖,原圖是白色刘急,使用了默認(rèn)的
UIImageRenderingModeAutomatic
圖片渲染方式棚菊,可以看出,此時(shí)這張圖片的色彩和button的tintColor保持了一致叔汁。
backgroundColor和tintColor一致
在我將button背景顏色和tintColor設(shè)為相同顏色時(shí)统求,button中的圖片并沒有如我想象的將圖片恢復(fù)本來的顏色。
UIImageRenderingModeAlwaysOriginal模式下的image
在我將圖片的渲染模式設(shè)置成
UIImageRenderingModeAlwaysOriginal
時(shí)攻柠,不管button的tintColor如何改變球订,圖片始終保持其真實(shí)色彩后裸。
UIImageRenderingModeAlwaysTemplate下的image
在設(shè)置了圖片渲染模式為
UIImageRenderingModeAlwaysTemplate
后瑰钮,button中圖片的顏色始終和其tintColor保持一致。