从多个 CGpath 构建 CAShapeLayer

Posted

技术标签:

【中文标题】从多个 CGpath 构建 CAShapeLayer【英文标题】:Constructing CAShapeLayer from a multiple CGpaths 【发布时间】:2011-02-12 10:03:09 【问题描述】:

我有一个 CAShapeLayer,它的形状来自路径。这将创建一个可以操作的图层对象,例如移动和旋转。 我的问题是我需要图层对象由多个路径组成。例如想象美国地图;有主要的形状,还有阿拉斯加。两种形状都没有连接,但它们是同一个实体,我需要它们成为单个 CAShapeLayer 中的单个对象,这样当我移动图层时,US 和 Alaska 都会一起移动。

    UIBezierPath*    ahPath = [self mydPath];     

    CAShapeLayer  *shapeLayer = [CAShapeLayer layer];

    shapeLayer.path = ahPath.CGPath;

    ...

    [self.layer addSublayer:shapeLayer];

【问题讨论】:

嗨,亚历克斯。我面临同样的问题。我有包含在另一个 CAShapeLayer 中的 CAShapeLayers。你能说说你是如何实现移动功能的吗? 【参考方案1】:

在您描述的情况下,我将制作一个代表美国的 CAShapeLayer 和一个代表州的单独 CAShapeLayer,然后将州图层添加到美国图层。移动 US 层会自动移动 state 层。优点是您可以为美国和各州涂上不同的颜色。

【讨论】:

效果很好!谢谢! @alex 很高兴听到。请将答案标记为已接受,因为这将有助于您将来获得更多高质量的答案。欢迎来到 SO!【参考方案2】:

还要注意CGPath 可以包含多个子路径,因此一个CGPath 可以包含美国和阿拉斯加。查看CGPath Reference 中的概述。

【讨论】:

以上是关于从多个 CGpath 构建 CAShapeLayer的主要内容,如果未能解决你的问题,请参考以下文章

从文本中获取 CGPath

将多个 CGPath 合并为一个路径

如何从文件创建 CGPath - 即 SVG

如何使 CAGradientLayer 遵循 CGPath

调整 CGPath 大小

如何计算 CGPath 和 CGRect 的交集? [复制]