簡單的我有兩個人的UIImageView圖標,它看起來像這樣:如何僅爲UIImage的非白色部分設置色調顏色?
,但是當我設置tintColor
爲紅色,它看起來是這樣的:
有什麼辦法避免覆蓋每個非零元素像素?我需要在那裏顯示領帶。有一次我需要紅色的人,其他時間是綠色的。
該圖標是簡單的PNG文件。圓圈是UIImageView的簡單背景色。因此,和的圖像部分不能爲zero-alpha。
有沒有辦法達到這樣的效果沒有創建每種顏色的圖像?
簡單的我有兩個人的UIImageView圖標,它看起來像這樣:如何僅爲UIImage的非白色部分設置色調顏色?
,但是當我設置tintColor
爲紅色,它看起來是這樣的:
有什麼辦法避免覆蓋每個非零元素像素?我需要在那裏顯示領帶。有一次我需要紅色的人,其他時間是綠色的。
該圖標是簡單的PNG文件。圓圈是UIImageView的簡單背景色。因此,和的圖像部分不能爲zero-alpha。
有沒有辦法達到這樣的效果沒有創建每種顏色的圖像?
這是相似的另一個想法我一直在與玩弄,所以我也多了幾分小提琴演奏......
這些3張開始:
,然後使用他們作爲.withRenderingMode(.alwaysTemplate)
給予所需的顏色...然後通過CALayer
將它們分層得到:
和「爆炸」的清晰視圖...
創建一個像這裏的「人」是100%透明 - 有效圖像中的「漏洞」。
將UIImageView的背景顏色設置爲「填充」顏色。
如果您不想將白色邊界框作爲圖像的一部分,您仍然可以使用圓形(例如CAShapeLayer)對其進行遮罩。
原始圖片: https://i.stack.imgur.com/eFrmB.png https://i.stack.imgur.com/2GNDX.png
它看起來相當不錯;)但是......如果我需要改變圈子的背景怎麼辦?我究竟做了什麼?原因?需要顯示它被選中或沒有...沒有其他方式來做到這一點?目前+1 –
您可以通過多層圖像和蒙版組合獲得「花哨」......會稍微玩一下,但不是沒有問題。另一種選擇是...因爲你的圖像非常簡單,從PNG切換到一對貝塞爾路徑+填充操作並不需要太多。也會很好地擴展。 – DonMag
不... bezier路徑是錯誤的方式...它不僅是關於那個圖標... –
使用CISpotColor過濾器:
這允許您指定圖像的顏色被改變成另一種顏色。因此,由於您知道領帶和背景的原始顏色,因此您可以通過一次移動就可以更改其中一個或兩個。
爲什麼你不使用兩個圖像? –
因爲我需要動態改變顏色。有一次它可能是綠色的,其他時間是紅色或黑色的... –
核心圖像。具體來說,使用GLSL編寫你自己的CIKernel。這其實很簡單。 – dfd