在我的UITableView实例中,我将单元格移动到索引:0并重新加载数据。问题是单元格“捕捉”到顶部(由于reloadData,我认为)。我想知道是否可以将单元格向上移动,然后再过几秒钟应用reloadData。这是我的代码:
[_toDoItems removeObject:todoItem];
[_toDoItems insertObject:todoItem atIndex:0 ];
[self.tableView beginUpdates];
[self.tableView moveRowAtIndexPath:origIndexPath toIndexPath:0];
[self.tableView endUpdates];
sleep(1);
[self.tableView reloadData];
这样做的问题是,在方法调用后,一切都会暂停1秒钟,然后才会发生“快照”动画。
sleep(1);
的作用是什么?把它删除。 - Souljackersleep()
。它会阻塞所有线程,包括处理所有视觉效果的主线程。因此你会看到它等待一秒钟,然后突然跳转。这个跳转只是在等待其线程被解锁。另外,由于reloadData
没有任何动画效果,所以会产生“突然跳转”的效果。 - Firo