3

我们重复地制作一个 CGLayer,进行处理,然后发布它。这在实时发生了很多。每次制作一个全新的 CGLayer 肯定会有很多开销。所以...

当然,最好只保留该层,每次都删除其中的所有数据——而不是从头开始创建一个新数据。

注意:如果您在覆盖所有内容的空白或透明矩形中绘制,那只会在现有路径之上添加更多数据。

那么,如何真正“擦除”或“重新开始”一个 CGLayer?

有一个函数 CGContextBeginPath(cc) 但令人困惑:它似乎只清除了“那个”路径,它似乎没有将所有 CGLayer 擦除回 no-data state

如何将 CGLayer 返回到无数据状态?有人知道吗?

更新...

事实证明,实际上没有办法做到这一点。

经过大量实验,我们确定似乎没有办法清除 CGLayer 中的所有数据(这真的令人失望)。

请注意,添加一个新的白色或透明矩形只是这样做 - 它实际上添加了更多数据。

所以不幸的是,没有已知的方法可以做到这一点。如果你是在高频率下构建这些(也许是为了计算),你每次都必须从一个新的开始。或者,您显然可以使用 CGContextBeginPath()删除(实际上是删除,而不仅仅是覆盖)一条路径。

希望这将有助于将来的某人。

4

2 回答 2

2

一旦你有上下文调用 CGContextClearRect( cc, someRect ) 来清除内容。

于 2011-01-05T15:29:41.873 回答
1

为什么不用(透明/白色)颜色的矩形填充它?如果要使用 clearColor(透明)清除图层,请确保图层不透明。

于 2011-01-05T03:08:10.400 回答