移动CALayer框架但不移动剪辑蒙版

时间:2013-03-13 22:18:32

标签: ios objective-c core-graphics calayer

我想通过设置框架来移动图层,但也不会移动图层剪辑。

我创建了一个按如下方式创建的图层:

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 个答案:

答案 0 :(得分:4)

我会将剪辑图层剪切到第三层。第三层需要:

  • 与您要屏蔽的图层的大小相同
  • 位于要屏蔽的图层的相同位置
  • 有clearColor背景色

然后只需移动底层,第三层及其剪裁层将保持不变。

注意:这对我有用 - 但是,您还必须确保要移动的图层是剪切图层的子视图。