tableview auto layoutのcellでreloadや遷移のタイミングでscrollのpositionがずれる
言葉じゃ伝えづらいので絵にしました。(力作)
こんな感じでauto layout使用した可変の、それぞれの高さがだいぶ違うcellがあったとき。
上だとAのcellは300にもなるけどBは40みたいなとき
このとき画面遷移やreloadをするとcellがずれる事案が起こりました。。(力作2)
なぜこうなる
どうやらestimatedHeightで決め打ちの高さを決めてもそこからサイズが離れすぎると起こる模様。
cellの高さを持ってあげて、estimatedHeightでそれらをしっかり返してあげればOK
HogeViewController.swift
private var cellHeightsDictionary: [IndexPath: CGFloat] = [:]
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
self.cellHeightsDictionary[indexPath] = cell.frame.size.height
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
if let height = self.cellHeightsDictionary[indexPath] {
return height
}
return UITableView.automaticDimension
}
Author And Source
この問題について(tableview auto layoutのcellでreloadや遷移のタイミングでscrollのpositionがずれる), 我々は、より多くの情報をここで見つけました https://qiita.com/kohemon/items/3ce7e80aa951e22b1da9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .