我需要改变UIImage的颜色。
但是这张图片有两种颜色,一种是边界,另一种是中心的白色。
白色必须保持不变,但其他颜色将在代码中更改..
我尝试了一些这样的事情:
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
}}
我甚至尝试改变每像素的像素,但效果并不好。
有人可以帮我吗?
答案 0 :(得分:0)
获得此效果的一个好方法是使所有白色区域的图像为纯白色,并将彩色区域设置为透明
现在你可以改变通过透明位发光的背景颜色,并且你有变色图标! :)