移动CALayer的框架但不移动裁剪蒙版。

4

我希望通过设置图层的框架来移动图层,但不要移动图层剪辑。

我创建的图层如下:

layer = [CustomLayer layer];
layer.frame = CGRectMake(50, 50, 100, 30);
[layer setNeedsDisplay];
[self.view.layer addSublayer:layer];

并添加一个剪辑层,如下所示:

clipLayer = [CAShapeLayer layer];
UIBezierPath *clipPath = [UIBezierPath bezierPathWithRoundedRect:layer.bounds
                                                    cornerRadius:10.0f];
clipLayer.path = clipPath.CGPath;
layer.mask = clipLayer;

然而,在我的代码的某个后续点,如果我设置层框架:
layer.frame = CGRectOffset(layer.frame, -20.0, 0.0);

图层和它的剪贴蒙版都有偏移。我想实现的效果是在一个圆角矩形裁剪区域下方“滚动”一个图层。有什么好主意吗?

1个回答

4

我想剪切夹层以覆盖第三层。这第三层需要:

  • 与要遮盖的图层大小相同
  • 在要遮盖的图层相同位置
  • 具有透明背景色

然后只需移动底层,第三层将保持不变,并遮盖其夹层。

注意:这对我有效——但您还必须确保被移动的图层是夹层的子视图。


正确。它们都必须是同一个UIView的子层,其中裁剪层是移动层的超级层。 - InvalidReferenceException

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接