7

In ActionScript 3 we can apply a mask of to a visual object like this:

SomeVisualObject.mask = maskShapeObject; 

How can I achieve similar result in Objective-C? Assume I have two UIImageView objects, I want something like this:

imageView1.mask = imageView2;

How can I use one UIImageView to mask, or clip the shape of, another?

Almas Adilbek
  • 4,371
  • 10
  • 58
  • 97
  • Read up on the compositing operations available when drawing UIImage objects. Sounds like you want the "source over" mode. – NSResponder Jul 16 '12 at 11:31
  • possible duplicate of [How to mask UIViews in iOS](http://stackoverflow.com/questions/4559743/how-to-mask-uiviews-in-ios) – Monolo Jul 16 '12 at 13:54

1 Answers1

6
CALayer *maskLayer = [CALayer layer];
 UIImage *maskImage = [UIImage imageNamed:@"maskImage.png"];
maskLayer.contents = (id)maskImage.CGImage;
maskLayer.bounds = (CGRect){CGPointZero, maskImage.size};

UIImageView *imageViewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
imageViewToMask.image = [UIImage imageNamed:@"image2.png"];
imageViewToMask.layer.mask = maskLayer;
msk
  • 8,885
  • 6
  • 41
  • 72