有时候我们需要同一张图片在不同情况下显示不同的颜色,让UI出图费时费力,自己出图自己又懒(别和我比懒,我懒得和你比),所以还是用代码解决吧😊
Swift版
//MARK: 改变图片颜色
extension UIImage{
/// 更改图片颜色
public func maskImageWithColor(color : UIColor) -> UIImage{
UIGraphicsBeginImageContext(self.size)
color.setFill()
let bounds = CGRect.init(x: 0, y: 0, width: self.size.width, height: self.size.height)
UIRectFill(bounds)
self.draw(in: bounds, blendMode: CGBlendMode.destinationIn, alpha: 1.0)
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return tintedImage!
}
}
OC版
- (UIImage *) maskImageWithColor:(UIColor *)color
{
NSParameterAssert(color != nil);
CGRect imageRect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);
UIImage *newImage = nil;
UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, self.scale);
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, 1.0f, -1.0f);
CGContextTranslateCTM(context, 0.0f, -(imageRect.size.height));
CGContextClipToMask(context, imageRect, self.CGImage);
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, imageRect);
newImage = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
return newImage;
}