UITableView に行追加すると contentOffset がズレる時の対応

環境: Xcode10.3、Swift 5.0.1

UITableView で行の一番下までスクロールして、データの追加読み込み行い、行追加後の reloadData 時にカクっと画面位置がズレる場合がある。
セルの高さはすべて固定値の場合の話。

UITableView の rowHeightestimatedRowHeight はデフォルトで UITableView.automaticDimension になっているのでこれを固定すればよい。

コードでやる場合は viewDidLoad あたりで

tableView.rowHeight = 60
tableView.estimatedRowHeight = 0

のように設定する。

StoryBoard 上でやる場合は Automatic のチェックを外す。