在Objective-C中对视图进行遮罩

7
ActionScript 3中,我们可以像这样为视觉对象应用掩码:
SomeVisualObject.mask = maskShapeObject; 

我应该如何在Objective-C中实现类似的效果?假设我有两个UIImageView对象,我想要像这样:

imageView1.mask = imageView2;

我该如何利用一个UIImageView 来对另一个进行遮罩或剪裁?

阅读有关绘制UIImage对象时可用的合成操作。听起来你想要“源覆盖”模式。 - NSResponder
可能是如何在iOS中掩盖UIView的重复问题。 - Monolo
1个回答

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;

它差不多能够工作,但是看起来蒙版已经定位在图像的左上角,位置为(-halfmaskwidth, -halfmaskheight)。 - Danyal Aytekin
结果证明,对我来说,使用“frame”可以正常工作,但是使用“bounds”却无法正常工作。 - Danyal Aytekin
@DanyalAytekin =) HTH - msk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接