gpt4 book ai didi

iphone - 屏蔽 CALayer - iPhone

转载 作者:行者123 更新时间:2023-12-03 18:30:28 27 4
gpt4 key购买 nike

我正在为 iPhone 创建一个自定义开/关切换开​​关(类似于标准开关),并且我正在设置 slider 的蒙版,但调用 [[myView [layer] setMask:maskLayer] 设置 mask 层相对于其 mask 层的位置,而不是相对于 mask 层的容器层的位置。对于此特定场景,需要相对于其包含层设置 mask 层的位置,因为切换 slider 将在 mask 下方移动,并且 mask 应保持静止。

无需对蒙版和切换 slider 组件进行动画处理即可达到所需的效果,有人知道如何实现此功能吗?这是我到目前为止所得到的:

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGMutablePathRef path = CGPathCreateMutable();

CGPathAddEllipseInRect(path, nil, CGRectMake(0, 0, 13, 13));
CGPathAddEllipseInRect(path, nil, CGRectMake(30, 0, 13, 13));
CGPathAddRect(path, nil, CGRectMake(6, 0, 32, 13));

[maskLayer setPath:path];
[maskLayer setFillColor:[[UIColor greenColor] CGColor]];

[[self layer] addSublayer:maskLayer];

[maskLayer setPosition:CGPointMake(2, 2)];

[self addSubview:toggleView];

[[toggleView layer] setMask:maskLayer];

最佳答案

蒙版只是一种特殊的子图层,因此蒙版的 super 图层将始终是它所遮蔽的图层。没有其他办法了。另外,您违反了文档中的此警告:

When setting the mask to a new layer, the new layer’s superlayer must first be set to nil, otherwise the behavior is undefined.

您应该删除 [[self layer] addSublayer:maskLayer]; 行。

为了解决您的问题,我将创建另一个图层或 View ,其中包含您的切换 View 上现在的所有内容,然后将该图层作为子图层添加到您的切换图层中。这样,您可以独立于蒙版放置新的子图层,如果移动父图层,蒙版和子图层都会一起移动(如果我理解正确的话,这就是他们应该做的事情)。

关于iphone - 屏蔽 CALayer - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267676/

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