Search code examples
iosobjective-cuiimagemask

How can I mask a UIImageView?


I am trying to mask an image with something like this:

image to be masked

Would you please help me?

I am using this code:

- (void) viewDidLoad {
    UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
    UIImage *mask = [UIImage imageNamed:@"mask.png"];
    UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
    myUIIMage.image = maskedImage;
}

Solution

  • There's an easier way.

    #import <QuartzCore/QuartzCore.h>
    // remember to include Framework as well
    
    CALayer *mask = [CALayer layer];
    mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];
    mask.frame = CGRectMake(0, 0, yourImageView.frame.size.width, yourImageView.frame.size.height);
    yourImageView.layer.mask = mask;
    yourImageView.layer.masksToBounds = YES;
    

    For Swift 4 and plus follow code below

    let mask = CALayer()
    mask.contents =  UIImage(named: "right_challenge_bg")?.cgImage as Any
    mask.frame = CGRect(x: 0, y: 0, width: leftBGImage.frame.size.width, height: leftBGImage.frame.size.height)
    leftBGImage.layer.mask = mask
    leftBGImage.layer.masksToBounds = true