1. ホーム
  2. iphone

[解決済み] UITableViewのbeginUpdates/endUpdatesでアニメーションが終了したことを検出する方法は?

2022-08-23 14:32:01

質問

テーブルセルの挿入/削除を insertRowsAtIndexPaths/deleteRowsAtIndexPaths で囲んでいます。 beginUpdates/endUpdates . 私はまた beginUpdates/endUpdates を使っています。これらの操作はすべてデフォルトでアニメーション化されています。

を使用しているときに、アニメーションが終了したことを検出するにはどうしたらよいでしょうか。 beginUpdates/endUpdates ?

どのように解決するのですか?

これはどうなのでしょうか?

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    // animation has finished
}];

[tableView beginUpdates];
// do some work
[tableView endUpdates];

[CATransaction commit];

これは、tableView のアニメーションが CALayer アニメーションを内部的に使用しているためです。つまり、アニメーションを開いているすべての CATransaction . もし、開いている CATransaction が存在しない場合(通常の場合)、暗黙のうちに1つが開始され、それは現在のrunloopの終了時に終了される。しかし、ここで行われているように、自分で1つを開始した場合は、その1つを使用することになる。