0

I get an ordinary image from the designer every new network call. But the design is that the image must be in the shape like this:

enter image description here

How can I do that? On android I use a path to create such a shape and then use a shader to draw the image in that shape. I don't find something like that on iOS?

user1007522
  • 7,858
  • 17
  • 69
  • 113

1 Answers1

0

Thanks to Krivoblotsky. You can use this piece of code to mask an image:

- (UIImage*) _maskImage:(UIImage *) image withMask:(UIImage *) mask
{
    CGImageRef imageReference = image.CGImage;
    CGImageRef maskReference = mask.CGImage;

    CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
            CGImageGetHeight(maskReference),
            CGImageGetBitsPerComponent(maskReference),
            CGImageGetBitsPerPixel(maskReference),
            CGImageGetBytesPerRow(maskReference),
            CGImageGetDataProvider(maskReference),
            NULL,
            YES
    );

    CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
    CGImageRelease(imageMask);

    UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
    CGImageRelease(maskedReference);

    return maskedImage;
}

You only need to make sure that your image is black and not a sort of black because it then will be used as transparency.

This is a very good tutorial and shows you the mask image:

http://jeroendeleeuw.com/post/33638733049/how-to-mask-images-with-core-graphics-in-ios

user1007522
  • 7,858
  • 17
  • 69
  • 113