我们重复地制作一个 CGLayer,进行处理,然后发布它。这在实时发生了很多。每次制作一个全新的 CGLayer 肯定会有很多开销。所以...
当然,最好只保留该层,每次都删除其中的所有数据——而不是从头开始创建一个新数据。
注意:如果您在覆盖所有内容的空白或透明矩形中绘制,那只会在现有路径之上添加更多数据。
那么,如何真正“擦除”或“重新开始”一个 CGLayer?
有一个函数 CGContextBeginPath(cc) 但令人困惑:它似乎只清除了“那个”路径,它似乎没有将所有 CGLayer 擦除回 no-data state。
如何将 CGLayer 返回到无数据状态?有人知道吗?
更新...
事实证明,实际上没有办法做到这一点。
经过大量实验,我们确定似乎没有办法清除 CGLayer 中的所有数据(这真的令人失望)。
请注意,添加一个新的白色或透明矩形只是这样做 - 它实际上添加了更多数据。
所以不幸的是,没有已知的方法可以做到这一点。如果你是在高频率下构建这些(也许是为了计算),你每次都必须从一个新的开始。或者,您显然可以使用 CGContextBeginPath()删除(实际上是删除,而不仅仅是覆盖)一条路径。
希望这将有助于将来的某人。