高さ 50 の 4 行のプレーンな UITableView があります。4 行目を押すと、UITableViewRowAnimationTop を使用して高さ 80 の 5 行目を挿入します。ここまでは順調ですね。
4行目をもう一度押したときに5行目を削除したい。しかし、UITableViewRowAnimationTop (またはその他のアニメーション スタイル) を使用して行を削除すると、アニメーションが非常にぎこちなくなります。アニメーションは開始されますが、アニメーションが完了する前にセルが突然消えます。(これは、背景色を持つセルを使用している場合にのみ明らかです。セルの下半分が、上のセルの下ではなく、突然消えることがわかります。)
コードは次のようなものです。
[self.tableview beginupdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop];
[self.tableview endupdates];
行の高さはtableView:heightForRowAtIndexPath:
メソッドによって提供されます。
この問題は、すべての行の高さが同じ場合、または削除される行が他の行よりも短い場合には発生しません。
回避策の 1 つは、削除する前に 5 番目のセルの高さを 50 に変更することだと思いますが、それはしたくありません。助けてください