一、beginUpdates 和 endUpdates必须成对使用动画
二、使用beginUpdates和endUpdates能够在改变一些行(row)的高度时自带动画,而且不须要Reload row(不用调用cellForRow,仅仅须要调用heightForRow,这样效率最高)。code
三、在beginUpdates和endUpdates中执行insert,delete,select,reload row时,动画效果更加同步和顺滑,不然动画卡顿且table的属性(如row count)可能会失效。animation
四、在beginUpdates 和 endUpdates中执行 reloadData 方法和直接reloadData同样,没有相应的中间动画。同步
改变Cell高度 直接调用: self.tableView.beginUpdates() ..... self.tableView.endUpdates()
利用UIView的动画的执行时间来控制beginUpdates和endUpdates的动画时间。 UIView.animate(withDuration: 0, animations: { self.tableView.beginUpdates() self.tableView.endUpdates() })