Studie
Studie

Reputation: 799

Masking an UIImage and set colored image instead

I'm working on an App which works with gestureRecognizer.
With gestures it is possible to select an UIImage (such as rectangle.png) and it is possible with a UIPopoverView to change the color of that image by selecting a color for the selected image.

This image lay in a UIImageView and I think the best solution is to mask that image and set a colored image with the dame size and frame instead.

Is it the right way? How can I optimize my approach? Which could be the best practice for this requirement?

Upvotes: 1

Views: 211

Answers (1)

flora
flora

Reputation: 11

 (UIImage *)maskImage:(UIColor *)maskColor
{
    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

    UIGraphicsBeginImageContext(rect.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0, rect.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextClipToMask(context, rect, self.CGImage);
    CGContextSetFillColorWithColor(context, maskColor.CGColor);
    CGContextFillRect(context, rect);

    UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return smallImage;
}

Upvotes: 1

Related Questions