web-dev-qa-db-ja.com

iPhone-コンテンツの更新を含むUITableViewCellの高さ変更のスムーズなアニメーション

重複の可能性:
選択したときにUITableViewCellの高さの変更をアニメーション化できますか?

セルのスイッチをクリックすると、テーブルビューの多くのセルの高さが変わる可能性があるテーブルビューがあります。どのセルがサイズを変更するかを計算するのは少し複雑なので、同じコードを2回呼び出さないようにします。

heightForRowAtIndexPathメソッドがあります(これは複雑なメソッドです)。

変化しないものに影響を与えることなく、細胞の成長または機能を縮小する方法をアニメーション化する方法はありますか?

UIViewアニメーション、アニメーションのあるセクションのreloadDataを試しましたが、スムーズなものは見つかりませんでした。変更する必要のある各セルをキャッチし、各セルのアニメーションでreloadDataを呼び出そうとしました。動作に近づいていますが、セルは次々に更新されています。そして、前に言ったように、heightForRowAtIndexPathメソッドを2回呼び出す必要があるため、これは実行したくありません。

私が欲しいのは、高さが変化する各セルを、フェードではなく、成長または縮小のようなものでアニメーション化できるものです。

あなたはそれをする方法を知っていますか?もう1つ、サイズが変更されると、セルの内容が少し変化します(テキストの追加、背面の色の変更など)

22
Oliver

UITableViewには、セルの高さの変更をアニメーション化するための巧妙なトリックがあります。空の更新ブロックをテーブルビューに送信しても、セルは挿入または削除されませんが、テーブル全体のセルの高さは再計算されます。したがって、このコードは奇妙に見えますが、それを実行する必要があります。

[tableView beginUpdates];
[tableView endUpdates];

更新されたセルの内容も変更する場合は、もちろん、reloadRowsAtIndexPaths:withRowAnimation:への1つ以上の呼び出しをupdatesブロックに追加する必要があります。

61
Ole Begemann