UITableView 负顶部内容插入导致重新排序行时出现故障

Posted

技术标签:

【中文标题】UITableView 负顶部内容插入导致重新排序行时出现故障【英文标题】:UITableView negative top content inset causes glitch when reordering rows 【发布时间】:2012-03-30 21:57:01 【问题描述】:

我有一个 UITableView,其顶部内容插图为负数 (-20)。我将负插图用于阴影效果:表格标题是阴影渐变。负插入导致阴影仅在用户向下拖动表格时出现(类似于时钟应用中的警报表格)。

这很好用。直到我开始重新排序行(通过标准 UITableView 重新排序机制)。

在我抓住第一行的那一刻,整个表格跳下,使最后一行的底部边缘与屏幕底部对齐。这是一个非常奇怪的故障。当我释放行(在相同或其他位置)时,表格保持在这种奇怪的、未对齐的状态。当我进行一些滚动时,表格会回到原来的位置。

如果我将其他行拖到顶行,也会发生这种情况。在顶行下方重新排序可以正常工作。当我将内容插图更改为零(或正数)时,不会发生故障。

这确实像是 ios (5.0) 中的一个错误 - 除非我遗漏了什么?知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

我在 iOS 6 中也遇到了这个问题。

我找不到解决方法,但如果您的表只有一个部分,则有一种解决方法可能会奏效。基本上,您可以设置负的部分标题高度,而不是将内容插入设置为负值。这似乎与负插图具有相同的效果——向上轻推滚动区域的全部内容——在重新排序期间不会出现故障。

所以而不是:

[tableView setContentInset:UIEdgeInsetsMake(-16, 0, 0, 0)];

试试:

[tableView setSectionHeaderHeight:-16.0];

如果您在部分标题(或表格中的多个部分)中有内容,这当然不会很好地发挥作用,但对于单部分表格,这似乎是一个可行的解决方法。


一个快速更新,因为我还没有足够的代表发表评论: 试图解决的原始错误似乎已在 iOS 7 上得到修复。我最终将修复包含在 iOS

【讨论】:

以上是关于UITableView 负顶部内容插入导致重新排序行时出现故障的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 重新加载部分时的内容插入更改

将新单元格插入排序的 UITableView 的有效方法?

UITableView 在滚动时在顶部插入部分

使用 UINavigationController 时在 UITableView 顶部插入图像?

重新排序单元格后重新加载自定义 UITableViewCell

分组 UITableView 35 点/像素顶部插入/填充