簡體   English   中英

使自定義圖像尊重tintColor屬性iOS

[英]Make custom image respect tintColor property iOS

我必須想象這已經被問過幾次了,但是我一定不能正確表達我的問題。

我有自己在Photoshop中制作的自定義圖像,並將其設置為按鈕的image屬性。 這里正常顯示:

在此處輸入圖片說明

背景是透明的,但是它是44x44,三個點是88x88像素的.png文件。 所以,如果我做這樣的事情:

self.theButton.tintColor = [UIColor redColor];

圖像仍顯示為白色。 我不是行業設計師,因此似乎缺少如何正確保存或設置文件以使它們尊重tintColor屬性的方法。 在photoshop中,我通常使用“另存為Web”將其保存。

謝謝

您正在尋找的是模板圖像。

從UIKit用戶界面目錄中:

模板圖片

在iOS 7中,您可以選擇將應用程序中的任何圖像視為模板圖像或模板圖像。 當您選擇將圖像視為模板時,系統將忽略圖像的顏色信息,並根據圖像中的alpha值創建圖像模具(alpha值小於1.0的圖像部分將被視為完全透明) 。 然后可以使用tintColor對模具進行重新着色,以匹配用戶界面的其余部分。

默認情況下,使用UIImageRenderingModeAutomatic創建圖像(UIImage)。 如果您在圖像上設置了UIImageRenderingModeAutomatic,則將根據其上下文將其視為模板或原始圖像。 某些UIKit元素(包括導航欄,選項卡欄,工具欄,分段控件)會自動將其前景圖像視為模板,盡管其背景圖像會被視為原始圖像。 其他元素(例如圖像視圖和Web視圖)將其圖像作為原始圖像進行處理。 如果希望始終將圖像作為模板而不考慮上下文,請設置UIImageRenderingModeAlwaysTemplate;。 如果希望始終將圖像視為原始圖像,請設置UIImageRenderingModeAlwaysOriginal。

要指定圖像的渲染模式,請首先創建一個標准圖像,然后在該圖像上調用imageWithRenderingMode:方法。

UIImage * myImage = [UIImage imageNamed:@“ myImageFile.png”]; myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

您可以通過使用具有渲染模式UIImageRenderingModeAlwaysTemplate的UIImage來獲得所需的結果。

UIImage *image = [UIImage imageNamed:@"Dots"];
UIImage *templateImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[theButton setImage:templateImage forState:UIControlStateNormal];

它們是設置模板圖像的兩種方法

1.使用Images.assets

在此處輸入圖片說明

2.使用代碼

UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

imageView.image = myImage;
imageView.tintColor = [UIColor greenColor] // or any other color you want

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM