UITableView负顶部内容插入在重新排序行时会导致毛刺

hen*_*g77 5 uitableview ios

我有一个UITableView,负顶部内容插入(-20).我使用负插入阴影效果:表头是阴影渐变.负插入导致阴影仅在用户向下拖动表时出现(类似于Clock应用程序中的Alarms表).

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

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

如果我将它们拖到顶行,这也适用于其他行.在顶行下面重新排序工作正常.当我将内容插入更改为零(或正数)时,不会发生毛刺.

它看起来像iOS(5.0)中的一个错误 - 除非我遗漏了什么?知道如何解决这个问题吗?

kit*_*rol 2

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

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

所以而不是:

[tableView setContentInset:UIEdgeInsetsMake(-16, 0, 0, 0)];
Run Code Online (Sandbox Code Playgroud)

尝试:

[tableView setSectionHeaderHeight:-16.0];
Run Code Online (Sandbox Code Playgroud)

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


由于我还没有足够的代表来发表评论,因此进行了一次快速更新:试图解决的原始错误似乎已在 iOS 7 上修复。我最终将修复程序封装在 iOS <7 设备的版本检查条件中。