gpt4 book ai didi

ios - 可以将 CAShapeLayer 传递给 CGContextDrawLayerAtPoint 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:07 25 4
gpt4 key购买 nike

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

我浏览了一些内容,但无法弄清楚如何将它转换/将 CAShapeLayer 桥接到 CGLayerRef。

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

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

最佳答案

简短回答:不。

长答案: CAShapeLayer 是一个核心动画层 (CALayer)。你把它放到你的界面上,它就会自己画出来。

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

I could use addSublayer: to display the shape layer

不能。必须。这就是您使用 CAShapeLayer 所做的。

您正在寻找的替代方法是将 CGPath 从 CAShapeLayer 中拉出并分配该路径并在 CGContext 中的多个位置多次对其进行描边。但真的没有必要那么做。 iOS绘图是关于层的;不要害怕拥有多个子层。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com