UIImageRenderingMode 有三種渲染模式:
UIImageRenderingModeAutomatic ? ? ? ?// 根據(jù)圖片的使用環(huán)境和所處的繪圖上下文自動調(diào)整渲染模式(默認(rèn)屬性)。
UIImageRenderingModeAlwaysOriginal ? // 始終繪制圖片原始狀態(tài),設(shè)置Tint Color屬性無效。
UIImageRenderingModeAlwaysTemplate ? // 始終根據(jù)Tint Color繪制圖片(顏色)顯示,忽略圖片的顏色信息(也就是圖片原本的東西是不顯示的)。
調(diào)用此屬性
UIImage *normalImage = [[UIImage imageNamed:@"111@2x"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
有何用處:個人經(jīng)常用到的有兩種
A
美工切出來一個返回按鈕 ?顏色是黃色 但有一個頁面需要這個返回按鈕是紅色 ?那就沒必要美工再切一張紅色的按鈕,而是利用UIImageRenderingModeAlwaysTemplate這個屬性把黃色按鈕改成紅色
例 ?代碼
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [[UIImage imageNamed:@"111@2x"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.tintColor = [UIColor purpleColor];
[self.view addSubview:imageView];
B
UIButton 的點(diǎn)擊狀態(tài) ?因為UIButton設(shè)置背景色 ?點(diǎn)擊UIButton ?是沒有點(diǎn)擊色的 ?但是UIButton的背景圖片有點(diǎn)擊色 那就可以利用UIImageRenderingModeAlwaysTemplate這個屬性改變?nèi)我庖粡垐D片的顏色為我們需要的那個顏色
例 ?代碼
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
btn.tintColor = [UIColor brownColor];
[btn setBackgroundImage:[[UIImage imageNamed:@"111@2x"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[self.view addSubview:btn];