2016-01-19 68 views
-1

我需要更改UIImage的顏色。更改UIImage的顏色多於一種顏色

但是這張圖片有兩種顏色,一種是邊框,另一種是中心的白色。

enter image description here

白色必須保持不變,但其他顏色將在代碼改變..

我已經嘗試了一些東西,例如:

let orImage = UIImage(named: "HomeImg") self.imgViewPin.image = orImage?.imageWithRenderingMode(.AlwaysTemplate) self.imgViewPin.tintColor = UIColor.redColor()

而且擴展UIImage

extension UIImage { 
func imageTintedWithColor(color:UIColor) -> UIImage { 
    var img:UIImage! 

    UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0) 
    var rect = CGRect.zero 
    rect.size = self.size 

    self.drawInRect(rect) 
    color.set() 
    UIRectFillUsingBlendMode(rect, .ColorBurn) 
    self.drawInRect(rect, blendMode: .SourceIn, alpha: 1.0) 

    img = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return img 
} 

func tintedImageWithColor(color:UIColor) -> UIImage { 

    UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0) 
    let context = UIGraphicsGetCurrentContext() 

    let rect = CGRect(origin: .zero, size: self.size) 
    CGContextSetBlendMode(context, CGBlendMode.Normal) 
    self.drawInRect(rect) 

    CGContextSetBlendMode(context, CGBlendMode.SourceIn) 
    color.setFill() 

    CGContextFillRect(context, rect) 

    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return image 
}} 

我甚至嘗試每像素更改像素,但效果不好。

任何人都可以幫助我嗎?

+1

你到目前爲止嘗試過什麼?試着回到這裏,回答具體的問題。 「爲我寫代碼」不是一個可以接受的問題。如果你對如何解決問題有疑問,請點擊這裏:http://stackoverflow.com/help/how-to-ask – Stonz2

+0

對不起,我已經改變了問題,以詳細說明我的主要問題,也將解決地圖。 –

回答

0

一個很好的方式來獲得這種效果,使您的形象與所有的白色區域白色固體,並設置爲透明

現在你可以改變背景顏色將通過透明位閃耀的彩色區域,在那裏你有你的變色圖標! :)

+0

但是,如果彩色以外的區域也是透明的,則效果將應用於所有內容。所以結果會是一個正方形,中間有一個圓形的白色圓圈,所以地圖引腳格式會丟失。 –

+0

是啊我的技術只有在你不需要實際的透明區域 – trapper