【问题标题】:How to add a view as a subview of UITableViewCell but on top of all other views如何将视图添加为 UITableViewCell 的子视图但在所有其他视图之上
【发布时间】:2024-04-20 19:55:01
【问题描述】:

我有一个问题 - 如何添加一个视图作为 UITableViewCell 的子视图,但在所有其他视图之上?

这是我想要实现的一个示例:

图像应该随着单元格滚动 - 保存它相对于滚动视图(在本例中为表格视图)的位置。

如果单元格的高度太小,则表情符号叠加层将被当前单元格顶部的单元格剪切,那么如何将此表情符号叠加层添加为子视图但同时将其显示在每个单元格的顶部?我现在已经尝试了很多变体,但没有什么对我有用。

仅添加为当前窗口的子视图对我不起作用,因为此叠加层应与单元格一起滚动。

尝试过的代码:

view.layer.zPosition = 5
cell.contentView.insertSubview(view, aboveSubview: cell.contentView)
cell.contentView.bringSubview(toFront: view)
UIApplication.shared.keyWindow?.addSubview(view)

【问题讨论】:

  • 可以分享一下试过的代码吗?
  • 我试图增加覆盖层的 layer.zPosition 并在表格视图单元格上减少它,试图添加为当前窗口,我尝试的最后一件事是插入子视图并带到前面 - 没有任何工作。我想我知道如何为 UICollectionView 做这件事,但是我正在处理的项目非常大,我认为现在还不能将 tableview 更改为 collection view。 'cell.contentView.insertSubview(view, aboveSubview: parentView) cell.contentView.bringSubview(toFront: view)'
  • 您的问题不清楚。你想在每个单元格上添加什么?
  • 基本上是的,它将适用于每个单元格,问题是当我添加高度大于单元格高度的叠加层时,它会被当前单元格上方的单元格裁剪。所以我想添加叠加层作为当前单元格的子视图,但它需要显示在所有视图之上。

标签: ios swift uitableview view subview


【解决方案1】:

尝试为您的 cell.contentview 和单元格本身设置 cliptobouds = false。

否则,如果它是您希望位于每个单元格之上的单个叠加层,那么最好实现 UISrollViewDelegate 并相应地定位叠加层。

【讨论】:

  • 是的,这对我有用 - 非常感谢。但是我需要对这种视图进行一些控制,现在当我添加按钮时,它只能在父单元格区域中点击,当我点击位于上方单元格上的按钮区域时最初什么也没发生。所以我不能像那样添加一些控件来覆盖?
  • 不,如果控件超出其父项的范围,控件将不起作用。您最好更改单元格的设计以模拟您要实现的目标。例如,将两个单元格嵌入到第一个单元格中。请记住,您可以在一个表格视图中拥有多种单元格。
最近更新 更多