[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]]
withRowAnimation:UITableViewRowAnimationNone];
当我插入的那一行向下滑动时,每行都这样做。我希望他们立即跳到新的地方。我不想打电话给reloadData
,因为那时我的所有细胞都会重新绘制。
是否可以删除此动画?
答案 0 :(得分:48)
这对我有用:
[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:indexPath
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];
希望这有帮助。
答案 1 :(得分:14)
这也有效
[UIView performWithoutAnimation:^{
[self.tableView insertRowsAtIndexPaths:indexPaths:withRowAnimation:UITableViewRowAnimationNone];
});
答案 2 :(得分:2)
快速示例(来自我的聊天)
UIView.performWithoutAnimation {
messagesTable.insertRows(at: [IndexPath(row: messages.count - 1, section: 0)], with: .none)
}
答案 3 :(得分:0)
不幸的是,我遇到了同样的问题,我没办法删除动画。
必须是UITableViewRowAnimationNone动画类型的错误,因为iOS(任何版本)似乎都不尊重它。
答案 4 :(得分:0)
如果您更新UITableView的dataSource并调用[tableView reloadData]
而不是手动插入行,则表格将刷新而不会有任何动画。