テーブル ビューがあり、セルへのスイッチをクリックすると、テーブル ビューの多くのセルの高さが変わる場合があります。どのセルのサイズが変わるかを計算するのは少し複雑なので、同じコードを 2 回呼び出さないようにしたいと思います。
私にはheightForRowAtIndexPath
方法があります(これは複雑な方法です)。
変化しないセルに影響を与えずに、セルの拡大または縮小機能をアニメーション化する方法はありますか?
Animations、アニメーション付きセクションの reloadData などを試してみましたUIView
が、スムーズにはいきませんでした。変更する必要がある各セルをキャッチし、各セルでアニメーション付きの reloadData を呼び出すようにしました。ほぼ機能していますが、セルが次々に更新されます。前に言ったように、heightForRowAtIndexPath メソッドを 2 回呼び出す必要があるため、これは実行したくありません。
私が欲しいのは、フェードではなく、拡大または縮小の動きのようなもので高さが変化する各セルをアニメーション化できるものです。
それを実行する方法を知っていますか?もう1つ、サイズを変更するとセルの内容が少し変わります(テキストが追加されたり、背景色が変わったりなど)。
ベストアンサー1
UITableView には、セルの高さの変化をアニメーション化する巧妙なトリックがあります。テーブル ビューに空の更新ブロックを送信すると、セルは挿入または削除されませんが、テーブル全体のセルの高さが再計算されます。このコードは奇妙に見えますが、次のように実行されるはずです。
[tableView beginUpdates];
[tableView endUpdates];
もちろん、更新されたセルの内容も変更したい場合は、reloadRowsAtIndexPaths:withRowAnimation:
更新ブロックに 1 つ以上の呼び出しを追加する必要があります。