- (UIImage *) imageWithTintColor:(UIColor *)tintColor blendMode:(CGBlendMode)blendMode
{
//We want to keep alpha, set opaque to NO; Use 0.0f for scale to use the scale factor of the device’s main screen.
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f);
[tintColor setFill];
CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height);
UIRectFill(bounds);
//Draw the tinted image in context
[self drawInRect:bounds blendMode:blendMode alpha:1.0f];
if (blendMode != kCGBlendModeDestinationIn) {
[self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0f];
}
UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return tintedImage;
}
调用
self.ivStar.image = [[UIImage imageNamed:@"image"] imageWithTintColor:[UIColor orangeColor] blendMode:kCGBlendModePlusLighter];
原图

kCGBlendModeNormal

kCGBlendModeMultiply

kCGBlendModeScreen
kCGBlendModeOverlay
kCGBlendModeDarken
kCGBlendModeLighten
kCGBlendModeColorDodge
kCGBlendModeColorBurn
kCGBlendModeSoftLight
kCGBlendModeHardLight
kCGBlendModeDifference
kCGBlendModeExclusion
kCGBlendModeHue
kCGBlendModeSaturation
kCGBlendModeColor
kCGBlendModeLuminosity
kCGBlendModeClear
kCGBlendModeCopy
kCGBlendModeSourceIn
kCGBlendModeSourceOut
kCGBlendModeSourceAtop
kCGBlendModeDestinationOver
kCGBlendModeDestinationIn
kCGBlendModeDestinationOut
kCGBlendModeDestinationAtop
kCGBlendModeXOR
kCGBlendModePlusDarker
kCGBlendModePlusLighter