insertSublayer 将隐藏表格视图中的单元格

Posted

技术标签:

【中文标题】insertSublayer 将隐藏表格视图中的单元格【英文标题】:insertSublayer will hide cells in table view 【发布时间】:2013-10-07 14:11:22 【问题描述】:

此代码在 ios7 中有效,但在 iOS6 模拟器中运行时,应该在子层之上的单元格将在它们之下。

bgLayer = [BackgroundLayer gradientFromColor:COLOR_MID_GRADIENT to:COLOR_GRADIENT];
CGRect bottom = self.view.bounds;
bottom.origin.y = self.view.bounds.size.height-GRADIENT_HEIGHT;
bottom.size.height = GRADIENT_HEIGHT;
bgLayer.frame = bottom;
[self.view.layer insertSublayer:bgLayer atIndex:1];

它的作用是在带有 tableview 的视图底部放置一个渐变层。

但是,渐变矩形中的单元格将隐藏在其后面!

我试图更改索引,但它没有做任何事情。另外,insertSublayer: below: 也不起作用。

我错过了什么?如何将图层放在表格视图单元格下方?

谢谢。

【问题讨论】:

在 iOS 6 和 iOS 7 中插入之前已经存在多少层? 一个,我在顶部插入了一个相同的。 你怎么知道的? (为了清楚起见,我问的是 在您的插入之前层中有多少已经存在)。 我怎么知道?我以前没有在 iOS 中使用过图层。 在解决这个问题后,我设法让它与 zPosition 一起工作。虽然我必须在 viewDidAppear 而不是 iOS6 的 viewWillAppear 中运行层代码。不要问我为什么,我想这与 viewWillAppear 之后发生的单元格渲染有关。感谢您的帮助。 【参考方案1】:

感谢 ***foe,我被指出了正确的方向。

我已经设法让它通过手动更改冲突层的 zPosition 来工作。虽然我必须在 viewDidAppear 而不是 iOS6 的 viewWillAppear 中运行添加层代码。不要问我为什么,我猜这与 viewWillAppear 之后发生的单元格渲染有关。

【讨论】:

【参考方案2】:

你的意思是在下面,比如“后面”?如果是这样,请设置 tableview 的 backgroundView ,并根据需要进行修改。 (图层、子视图等),它总是出现在单元格后面

【讨论】:

谢谢,我将图层添加到视图本身而不是 tableView 的 backgroundView。 不!背景视图是静态的,滚动时不跟随表格视图。这将意味着我的渐变处于静态位置。如何将实际图层添加到表格视图? :// 没错,它是静态的。但是 tableview 后面的视图也是静态的。如果您希望它与您的 tableview 一起滚动,您需要为此创建一个聪明的解决方案。我不会直接将视图添加到 tableview 本身(谁知道 tableview 如何管理它的子视图) 当我像上面那样放入图层时滚动工作。当我遇到层相互覆盖的问题时,它仅适用于 iOS6。 @Spoek 我对zPosition 的提示对你没有任何启发?

以上是关于insertSublayer 将隐藏表格视图中的单元格的主要内容,如果未能解决你的问题,请参考以下文章

移动表格视图位置和隐藏视图

当用户在表格视图中向下滚动时隐藏视图

选择时如何从表格视图中隐藏行

如何将数据从表格视图单元格传回表格视图类?

文本字段为空时隐藏自动完成表格视图

向表格视图控制器添加隐藏元素