iOS:使用UIBezierPath遮罩UIImage

11

我试图对一张图片进行遮罩处理,使得它只有两个圆角。但是,使用我目前的代码只是在图片上添加了白色蒙版,但似乎并没有应用它。请问我需要做什么来实现对图片角落的遮罩处理呢?

CAShapeLayer *maskLayer = [CAShapeLayer layer];
UIBezierPath *roundedPath = [UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(16.f, 16.f)];    
maskLayer.fillColor = [[UIColor whiteColor] CGColor];
maskLayer.backgroundColor = [[UIColor clearColor] CGColor];
maskLayer.path = [roundedPath CGPath];

// Add mask
self.imageView.layer.mask = maskLayer;
1个回答

7

在UIView中圆角化两个角

如上链接的问题所提到的,您可能需要在应用视图掩码之前从层次结构中移除视图。

[self.imageView removeFromSuperview];
self.imageView.layer.mask = maskLayer;
[self.view addSubview:self.imageView];

此外,您的maskLayer没有bounds。您需要将其设置为您想要遮罩的视图的frame(或bounds)。
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.imageView.frame;

1
请参阅苹果的文档。我建议从UIImage开始,以及CGImage,它是 UIImage 内部的底层图像对象。您会发现在 CGImage 中有使用遮罩创建图像的函数,然后是一个 UIImage 构造器,该构造器将您的新 CGImage 作为图像。 - user244343

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