UITableView 分隔符出现在单元格中间

Posted

技术标签:

【中文标题】UITableView 分隔符出现在单元格中间【英文标题】:UITableView separator appear in middle of cell 【发布时间】:2019-01-28 10:01:08 【问题描述】:

有时我的 tableviewcell 分隔符出现在单元格的中间。我搜索并找到了一种解决方案,我可以将 SeparatorStyle 设置为 none 并在单元格底部设置我的自定义分隔符,但我不想这样做。

我想知道为什么它有时只出现的根本原因。除了这个还有其他解决方案吗?我也找到了this,但没有帮助。附上截图:

编辑

我已经在网上搜索并尝试了所有可用的解决方案,但它不起作用。

也试过下面的代码:

upNextTableView.estimatedRowHeight = 44
upNextTableView.rowHeight = UITableView.automaticDimension

【问题讨论】:

你能告诉我们你的相关代码吗? 请截图! 你试过 tableView.rowHeight = UITableVIew.automaticDimension 和 tableView.estimatedRowHeight = SomeValue 作为单元格高度吗? @RatneshJain 我也试过了,问题仍然存在 我在谷歌上搜索并尝试了所有可用的解决方案,但它不起作用,这就是为什么发布问题。如果您不知道解决方案,请不要无缘无故地投反对票。 【参考方案1】:

如果您使用自动布局并已实现 heightForRowAt 委托方法并且该方法返回的值与单元格的实际高度不匹配,则可能会发生这种情况。

【讨论】:

我没有添加 heightForRowAt 方法【参考方案2】:

斯威夫特

将这两行代码添加到表格视图控制器的 viewDidLoad() 方法中:

tableView.layoutMargins = UIEdgeInsets.zero
tableView.separatorInset = UIEdgeInsets.zero

现在寻找你的 cellForRowAt 方法并添加这个:

cell.layoutMargins = UIEdgeInsets.zero

【讨论】:

【参考方案3】:

分隔符不能出现在单元格中间,这是不可能的。

但是您单元格中的内容有可能比单元格本身大,并且与下一个单元格重叠。

确保您已正确设置所有约束。 如果单元格应该具有动态高度,请确保在 tableView 中指定它。 here is a useful link 或者只是将 clipToBounds = true, 设置为单元格...

【讨论】:

我所有的约束都正确。 clipToBounds 为真 实际 UITableViewCell 的clipToBounds?为了调试尝试为实际单元格设置一些BG颜色,以查看内容是否被推送... 是的,我尝试添加背景颜色,分隔符实际上是向上移动 你能给我看一个包含所有视图层次结构的故事板中的 UITableViewCell 的屏幕截图吗?【参考方案4】:

选择表格视图并转到属性检查器。

见下文:

接下来,转到 Separator Inset 并将其从 Automatic 更改为 Custom。

【讨论】:

以上是关于UITableView 分隔符出现在单元格中间的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 单元格分隔符在选中时消失

uitableview 单元格中有一个横向分隔符

如何在 UITableView 中的单元格之间添加分隔符单元格/uiview?

UITableView 的单元格分隔符在滚动后消失

通过单元格重用错误绘制的 UITableView 分隔符?

UITableView 在 iOS8 中为某些单元格显示错误位置的分隔符