【问题标题】:Move a CALayer frame but not the clip mask移动 CALayer 帧但不移动剪辑蒙版
【发布时间】:2013-03-13 22:18:32
【问题描述】:

我想通过设置它的框架来移动一个图层,但不移动图层剪辑。

我创建了一个图层,创建如下:

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

图层和它的剪辑蒙版都是偏移的。我想要达到的效果是在圆角矩形剪切区域下方“滚动”一层。有什么想法吗?

【问题讨论】:

    标签: ios objective-c core-graphics calayer


    【解决方案1】:

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

    • 与要遮罩的图层大小相同
    • 位于要遮罩的图层的同一位置
    • 具有 clearColor 背景颜色

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

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

    【讨论】:

    • 正确。它们都必须是同一个 uiview 的子层,剪切层是移动层的超层。
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 2016-11-07
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多