UITableView beginUpdates / endUpdates callback

Estoy haciendo cambios a una tablaView usando un bloque beginUpdates / endUpdates. A lo largo del path necesito actualizar una sombra paralela para que refleje la composition actual de tableView.

Traté de configurar KVO para el contentSize de tableView, pero solo se llama a endUpdates , una vez que la animation ha finalizado. Lo que quiero es que se llame cada vez que contentSize cambie (incluso si es solo por un píxel). ¿Hay alguna forma de lograr esto?

Lamento decir que no creo que puedas hacer esto. Cuando realiza cambios en la tabla después de que se ha llamado beginUpdates los cambios se animan como una sola animation después de endUpdates . No hay callback de animation durante estas animaciones. No he probado esto, así que no sé si funcionaría bien para esto, pero podría intentar anidar los datos de beginUpdates y endUpdates y actualizar su sombra después de cada endUpdates .

¿Qué hay de esto?

 [CATransaction begin]; [CATransaction setCompletionBlock:^{ // animation has finished }]; [tableView beginUpdates]; // do some work [tableView endUpdates]; [CATransaction commit]; 

El método de Rudolf no me funcionó tan bien como lo esperaba. En mi caso, estaba seleccionando una fila en UITableView usando esto, y el método de Rudolf hacía que la tabla hiciera dos animaciones con un poco de congelación: la animation dentro de beginUpdates / endUpdates, un poco de congelación y la animation en el bloque de finalización.

  [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:scrollPosition]; 

eso me inspiró a crear este código … y esto funciona a la perfección:

 [UIView animateWithDuration:0.0 animations:^{ [tableView beginUpdates]; // do something to the table [tableView endUpdates]; } completion:^(BOOL finished) { // Code to run when table updates are complete. }];