iOS:使用UIBezierPath屏蔽UIImage

时间:2011-08-15 23:05:12

标签: iphone objective-c ios uiimage

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

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 个答案:

答案 0 :(得分:6)

Round two corners in 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;