我正在尝试 mask 图像,以便只能给它两个圆角。使用我拥有的代码,它只是在图像上以白色添加了蒙版,但似乎没有应用它。我需要做些什么来遮盖图像角落?

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;

最佳答案

Round two corners in UIView

如以上链接的问题所述,您可能需要在应用其蒙版之前将 View 从层次结构中删除。

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

另外,您的maskLayer没有bounds。您需要将其设置为您要 mask 的 View 的frame(或bounds)。
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.imageView.frame;

关于iphone - iOS:使用UIBezierPath mask UIImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7071815/

10-08 23:52