↓のスクリーンショットのような感じで、UILabelの行数に依存して、UITableViewのセルの高さが自動で算出されるようにしてみます。
これをやると、 tableView(_:heightForRowAt:)
を実装する必要がなくなります。
TL; DR
- セルの中のすべてのUIパーツに対して正しいAutoLayoutを設定する
- 一度UILabelだけのセルにしてみて、うまく伸縮するのを確認してから、1つずつUIパーツを増やしていくのが良い
- ViewController側で
-
tableView.rowHeight = UITableViewAutomaticDimension
と指定する -
tableView.estimatedRowHeight = 44.0
などと指定する
-
コードはこちら (Xcode 8, Swift 3)
keisei1092/UITableViewAutomaticDimensionExample
https://github.com/keisei1092/UITableViewAutomaticDimensionExample
参考
[iOS8~]セルの高さ可変UITableView(コードベース)
http://qiita.com/taku_oka/items/c3f9281c4a0c56218c2e
Self-sizing Table View Cells - Ray Wenderlich
https://www.raywenderlich.com/129059/self-sizing-table-view-cells