一、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() })