菜鸟教程小白 发表于 2022-12-12 09:32:15

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


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

<p>我进行了一些浏览,但不知道如何将它转换/桥接 CAShapeLayer 到 CGLayerRef。 </p>

<p>如果不能转换,那么可以使用 CGLayerCreateWithContext 创建 CAShapeLayer 吗?</p>

<p>我正在做的是用 UIBezierPath 创建一个绘图,然后创建一个 CAShapeLayer 并将其路径设置为 UIBezierPath,然后我想显示它。我<em>可以</em>使用 addSublayer 来显示形状图层,但是我将在多个不同的点显示相同的形状,因此我计划使用 CGContextDrawLayerAtPoint 在不同的点显示它而不是添加多个子图层。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>简答:</strong>不。</p>

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

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

<blockquote>
<p>I could use <code>addSublayer:</code> to display the shape layer</p>
</blockquote>

<p>不可能。必须。这就是您使用 CAShapeLayer 所做的事情。</p>

<p>您正在寻找的替代方法是将 CGPath 拉出 CAShapeLayer 并分配该路径并在 CGContext 中的多个位置多次对其进行描边。但实际上没有必要这样做。 iOS 绘图都是关于图层的;不要害怕有多个子层。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 可以将 CAShapeLayer 传递给 CGContextDrawLayerAtPoint 吗?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23253022/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23253022/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 可以将 CAShapeLayer 传递给 CGContextDrawLayerAtPoint 吗?