今天我注意到,当我在我的 UIView
实例中运行以下代码时,向我的 View 添加 1 个 CALayer 和 2 个 subview :
[self.layer.sublayers count]
这将返回3
。这是否意味着 subview 也被视为子层?如果我只想要在 sublayers
调用中绘制的 CALayers,我该怎么做?
最佳答案
是的,每个 UIView
都有一个底层 CALayer
,当 View 添加到 super View 时,它会添加到其 super View 的图层中。
我不知道只找到您自己的图层的理想方法。由于 sublayers
是一个 NSArray
(与 NSSet
相反),这意味着它是一个有序列表,这意味着您可以确定顺序将 View 添加到 super View 的顺序与它们在所述数组中出现的顺序相同。
因此,如果您先添加 UIView,然后添加您自己绘制的 CALayers,您可能可以通过访问子层中从索引 2 开始(跳过 0 和 1)的对象来获得自己的 CALayers。 。
当然,如果您随后向 super View 添加或删除 View ,则必须修改此值,因此假设这实际上有效,您将需要以某种方式动态生成它。
您可以在添加图层时使用 sublayers
属性上的 indexOfObject:
来确定图层的索引。更安全的路线可能是简单地将此索引存储在列表中的某个位置,并仅使用该列表中的索引访问子层。
关于objective-c - subview 计入根 CALayer 的子层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254639/