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保持一致。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容