我如何确定CALayer是否被其他CALayer完全覆盖?

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

最终,一个图层被其他图层完全覆盖。 在这一点上,我想从内存中删除图层。

有什么方法可以知道一个图层何时被其他图层覆盖(100%或一些分数)?

每个图层都有一个旋转变换,所以我不能准确地在所有图层的框架之间进行比较。

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

当然,这是假设你所有的图层都是完全不透明的,并且填满了整个边界。