- (UIImage *)image:(UIImage *)image WithTint:(UIColor *)tintColor { // Begin drawing CGRect aRect = CGRectMake(0.f, 0.f, image.size.width, image.size.height); CGImageRef alphaMask; // // Compute mask flipping image // { UIGraphicsBeginImageContext(aRect.size); CGContextRef c = UIGraphicsGetCurrentContext(); // draw image CGContextTranslateCTM(c, 0, aRect.size.height); CGContextScaleCTM(c, 1.0, -1.0); [image drawInRect: aRect]; alphaMask = CGBitmapContextCreateImage(c); UIGraphicsEndImageContext(); } // UIGraphicsBeginImageContext(aRect.size); // Get the graphic context CGContextRef c = UIGraphicsGetCurrentContext(); // Draw the image [image drawInRect:aRect]; // Mask CGContextClipToMask(c, aRect, alphaMask); // Set the fill color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextSetFillColorSpace(c, colorSpace); // Set the fill color CGContextSetFillColorWithColor(c, tintColor.CGColor); UIRectFillUsingBlendMode(aRect, kCGBlendModeNormal); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Release memory CGColorSpaceRelease(colorSpace); CGImageRelease(alphaMask); return img; }