使用多种颜色更改UIImage的颜色

时间:2016-01-19 15:45:09

标签: ios objective-c xcode swift 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 个答案:

答案 0 :(得分:0)

获得此效果的一个好方法是使所有白色区域的图像为纯白色,并将彩色区域设置为透明

现在你可以改变通过透明位发光的背景颜色,并且你有变色图标! :)