我创建了一个带有半透明黑色背景的 UIView
,以覆盖主应用程序的视图。我想要实现的效果是在该 UIView
中某个位置创建一个剪切圆形图形,使半透明黑色背景不可见,从而产生整个图像上除了圆形区域以外为黑色的遮罩效果(这是为了突出显示该区域内的一个按钮)。
我已经使用 CAShapeLayer
创建了圆形蒙版,但这产生了相反的效果(即视图的其余部分是清晰的,在圆形内部是半透明黑色的)。我希望的是圆形外的所有内容都保持半透明黑色,然后内部的内容是清晰的。这是我使用的代码,请问如何使它以相反的方式工作?我的 blackMask
是半透明黑色视图,我的 buttonCircle
是我想要保持清晰的圆形。
也许我需要以某种方式反转路径?
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGRect maskRect = buttonCircle.frame;
CGPathRef path = CGPathCreateWithEllipseInRect(maskRect, NULL);
maskLayer.path = path;
CGPathRelease(path);
blackMask.layer.mask = maskLayer;
编辑:现在正在尝试这个,但是使用它时根本看不到任何掩模:
UIView *circularMaskView = [[UIView alloc] initWithFrame:buttonCircle.frame];
circularMaskView.backgroundColor = [UIColor greenColor];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGPathRef path = CGPathCreateWithEllipseInRect(buttonCircle.frame, NULL);
maskLayer.path = path;
CGPathRelease(path);
circularMaskView.layer.mask = maskLayer;
[blackMask addSubview:circularMaskView];
[UIColor clearColor]
一起使用。我可以制作一个绿色的遮罩或者其他颜色,位置等都是正确的,但如果我将颜色设置为透明,它就不起作用了。我已经检查了新视图上的opaque
属性。 - Luke