gpt4 book ai didi

objective-c - 为什么我用 "CGMutablePathRef"方法得到相反的掩码

转载 作者:行者123 更新时间:2023-11-29 13:28:59 24 4
gpt4 key购买 nike

我画了一个 View 。 View 的框架 = (0,0,44,44) 并且 View 的背景颜色为黑色。我想添加一个蒙版以使 View 看起来像这样:蒙版是 View 中间的一个小圆圈。但我得到了相反的结果,只有 View 的中间没有被屏蔽。这样的错误结果enter image description here

我的代码是:

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];

代码有什么问题?谢谢。

最佳答案

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

其次,将形状层的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);

关于objective-c - 为什么我用 "CGMutablePathRef"方法得到相反的掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com