iOS
UITableView
UITableViewCell
UIKit
Swift

【TIPS】UITableViewCellの高さの自動計算されてないときの対処法

iOS開発でハマったのでメモとして残しておく

事象

iOS11ではUITableViewのレイアウトが崩れていないのにiOS10ではUITableViewのレイアウトが崩れてしまっていた。

原因

  • 自動で高さを計算してくれてなかった。
  • AutoLayoutの制約をStoryboardではなくコード上でレイアウトが組まれていただけだった。

対処

  • iOS10以前もサポートするアプリは
public func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

これでOSのバージョンに関係なく高さを自動で計算できます。

参考

UITableViewのrowHeightやestimatedRowHeightに何を設定すると良いのか