删除高度大于其他单元格的单元格时,动画看起来很笨拙

P. *_*ght 7 iphone uitableview ios

我有一个简单的UITableView有4行,每行高度为50.当我按第四行时,我使用UITableViewRowAnimationTop插入高度为80的第五行.到现在为止还挺好.

我想在再次按下第四行时删除第五行.但是当我使用UITableViewRowAnimationTop(或任何其他动画样式)删除行时,动画看起来很尴尬 - 动画开始但是在动画完成之前单元格突然消失.(这只有当您使用具有背景颜色的单元格时才会显现.您可以看到单元格的下半部分突然消失,而不是消失在其上方的单元格下方.)

代码是这样的:

[self.tableview beginupdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop];
[self.tableview endupdates];
Run Code Online (Sandbox Code Playgroud)

行高由该tableView:heightForRowAtIndexPath:方法提供.

当所有行具有相同的高度,或者被删除的行比其他行短时,不会发生此问题.

我认为一个解决方法是在删除它之前将第五个单元格的高度更改为50,但我宁愿不这样做.请帮助

Kal*_*lle 0

您是否尝试过在没有开始/结束更新的情况下执行此操作?我依稀记得曾经使用过那些让事情变得奇怪的东西。

您是否尝试过reloadRowsAtIndexPaths:下一行做 a ?假设有一个,那就是。

heightForRow您确定在调用 deleteRowsAt 时数据源的响应行为正确吗?(例如,您可以设置一些标志来指示删除调用后该事物不再可见,这可能会导致新行的高度错误)