如何确定其他CALayers是否完全涵盖CALayer?

时间:2011-01-27 19:27:16

标签: iphone ios core-animation calayer

我有一系列随机放置在屏幕上的图层。随着每个图层的添加,它将位于所有其他图层的顶部。

最终,图层完全被其他图层覆盖。此时,我想从内存中删除该层。

有没有办法知道其他图层覆盖一层(100%或某个部分)?

每个图层都应用了旋转变换,因此我无法在所有图层的帧之间进行准确的比较。

1 个答案:

答案 0 :(得分:3)

你可以做一个像素测试来找出答案。初始化屏幕大小的灰度上下文(如果可能,它只需要1位,但我不知道iOS是否真的支持该配置)。用黑色填充该区域。用白色填充图层覆盖的区域(可以采用图层的变换,将其设置为CTM,然后填充图层的矩形)。然后迭代所有其他图层并做同样的事情,除了再次填充黑色。完成后,您可以扫描上下文中的所有像素,查看其中是否有任何像素是白色的。如果找到白色像素,则图层仍然可见。否则,它不是。

当然,这假设您的所有图层都是完全不透明的并填充其整个边界。