我有一个CAShapeLayer并试图通过将其传递给CGContextDrawLayerAtPoint来绘制它,但是在将CAShapeLayer * __ strong的可保留参数传递给需要CGLayerRef的函数时遇到了错误。

我已经做了一些浏览,但是不知道如何转换它/将CAShapeLayer桥接到CGLayerRef。

如果无法转换,是否可以使用CGLayerCreateWithContext创建CAShapeLayer?

我正在做的是使用UIBezierPath创建图形,然后创建CAShapeLayer并将其路径设置为UIBezierPath,然后显示它。我可以使用addSublayer来显示形状层,但是我将在多个不同的点上显示相同的形状,因此,与其添加我计划使用CGContextDrawLayerAtPoint来在不同的点上显示它的多个子层,不如。

最佳答案

简短答案:不。

长答案: CAShapeLayer是一个核心动画层(CALayer)。您将其放入界面并进行绘制。

我知道他们使用“图层”一词的方式令人困惑,但是CGContextDrawLayerAtPoint与之无关(它以完全不同的方式使用“图层”一词,指的是CGLayer,这是完全不同的并且完全使用不同地)。您在这里走错了兔子洞。

我可以使用addSublayer:显示形状层

不行必须。那就是使用CAShapeLayer所做的。

您正在寻找的替代方法是将CGPath从CAShapeLayer中拉出,并在CGContext中的多个位置多次分配该路径并对其进行描边。但是实际上没有必要这样做。 iOS绘图全都与图层有关。不要害怕拥有多个子层。

关于ios - 可以将CAShapeLayer传递给CGContextDrawLayerAtPoint吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23253022/

10-12 00:16