UITaUITableView不进行reloadData或reloadRows照样可以改变Cell的高度

1、beginUpdates 和 endUpdates必须成对使用 2、使用beginUpdates和endUpdates可以在改变一些行(row)的高度时自带动画,并且不需要Reload row(不用调用cellForRow,仅仅需要调用heightForRow,这样效率最高)。 3、在beginUpdates和endUpdates中执行insert,delete,select,reload row时,动画效果更加同步和顺滑,否则动画卡顿且table的属性(如row count)可能会失效。 4、在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()
 })

猜你喜欢

转载自my.oschina.net/u/1763048/blog/1791347