gpt4 book ai didi

iPhone CALayer 堆叠顺序

转载 作者:行者123 更新时间:2023-12-03 19:35:36 27 4
gpt4 key购买 nike

我正在使用 CALayers 绘制到 UITableViewCell。我试图弄清楚如何根据 UITableViewCell 的内容对图层进行排序。例如:

  1. 我在 cellForRow:atIndexPath 方法中向 UITableViewCell 添加标签
  2. 在 UITableViewCell 的 drawRect 方法中,我使用当前上下文绘制一些内容
  3. 另外,在drawRect中我添加了一些子层

那么这些元素的顺序是什么?我知道我在 CALayers 上有 zPosition,但我不确定它们是否始终位于 UITableViewCell 的任何 subview 之上。而且我不确定在drawRect中绘制的内容按顺序出现在哪里。任何帮助或文档链接都会很棒。我已通读《核心动画编程指南》,但没有看到任何地方可以回答这个问题。

最佳答案

CALayers 维护层次结构,就像 View 一样。子层在其 super 层之前渲染,所有层次结构都向上。 zPosition 属性只能用于通过将一个图层放置在另一个图层之上来控制同级图层的渲染。即使这样,最好还是在 sublayers 属性中对同级图层进行排序(图层按照它们在数组中的顺序绘制,每个连续的图层都绘制在数组中前一层的基础上)。

很容易看到这个层次结构,因为当您在代码中创建子层时,您会手动将子层添加到层中,一直回到 UITableViewCell 的支持层(层支持的 UIView 的子类)。

顺便说一句,您确实不应该在 UITableViewCell 的 -drawRect: 方法中添加图层。那应该只用于绘制 UITableViewCell 基础层的内容。在此方法中分配和设置 CALayers 可能会导致滚动或重绘时速度显着减慢。您只需要在初始化 UITableViewCell 时的某个时刻设置这些层一次,然后在重用单元格时简单地更新它们。

关于iPhone CALayer 堆叠顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2553667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com