我正在使用CALayers绘制到UITableViewCell。我正在试图弄清楚层是如何与UITableViewCell的内容一起排序的。例如:
那么这些元素的顺序是什么。我知道我在CALayers上有zPosition,但我不确定它们是否总是位于UITableViewCell的任何子视图之上。而且我不确定drawRect中绘制的内容在哪里出现。任何帮助或文档链接都会很棒。我已经阅读了核心动画编程指南,并没有看到任何可以回答它的地方。
答案 0 :(得分:4)
CALayers维护层次结构,就像视图一样。子层在其超级层前面渲染,层次结构都在层次结构中。 zPosition
属性应仅用于通过将兄弟图层放在另一个图层上方来控制兄弟图层的渲染。即便如此,您最好在sublayers
属性中对兄弟图层进行排序(图层按照它们在该数组中的顺序进行绘制,每个连续图层都在数组之前的图层上绘制)。
很容易看到这个层次结构,因为当你在代码中创建子层时,你手动将子层添加到层中,一直回到UITableViewCell的后备层(层支持的UIView的子类)。
顺便说一下,你真的不应该在你的-drawRect:
方法中为你的UITableViewCell添加图层。这应该只用于绘制UITableViewCell基础层的内容。在此方法中分配和设置CALayers可能会导致滚动或重绘时显着减慢。您应该只需要在初始化UITableViewCell时在某个时刻设置这些图层,然后只需在重复使用该单元时更新它们。
答案 1 :(得分:3)
请注意,出于性能原因,不建议在UITableViewCell中绘图并同时使用子视图。出于同样的原因,不建议使用4个以上的子视图/图层。