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