1

我画一个视图。视图s frame = (0,0,44,44) and the view的背景颜色为黑色。我想添加一个蒙版使视图看起来像这样:蒙版是视图中间的一个小圆圈。但我得到了相反的结果,只有视图的中间没有被屏蔽。像这样的错误结果在此处输入图像描述

我的代码是:

aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];

[aView.layer setBackgroundColor:[[UIColor blackColor] CGColor]];

CAShapeLayer *mask = [[CAShapeLayer alloc] init];
mask.frame = aView.bounds;
CGMutablePathRef p2 = CGPathCreateMutable();
CGPathAddEllipseInRect(p2, NULL, CGRectInset(mask.bounds, 10, 10));

mask.path = p2;
aView.layer.mask = mask;

CGPathRelease(p2);

[self addSubview:aView];

代码有什么问题?谢谢。

4

1 回答 1

1

首先,在遮罩路径中添加一个矩形。

其次,将fillRule形状层的属性设置为kCAFillRuleEvenOdd,使中心部分留空。

aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];

[aView.layer setBackgroundColor:[[UIColor blackColor] CGColor]];

CAShapeLayer *mask = [[CAShapeLayer alloc] init];
mask.fillRule = kCAFillRuleEvenOdd;
mask.frame = aView.bounds;
CGMutablePathRef p2 = CGPathCreateMutable();
CGPathAddRect(p2, &CGAffineTransformIdentity, mask.bounds);
CGPathCloseSubpath(p2);
CGPathAddEllipseInRect(p2, NULL, CGRectInset(mask.bounds, 10, 10));

mask.path = p2;
aView.layer.mask = mask;

CGPathRelease(p2);
于 2012-09-07T10:25:02.287 回答