【Swift UIKit】UITableViewCellでセルの高さを変更する方法!固定値と可変値
この記事からわかること
- SwiftのUIKitでリストを実装する方法
- UITableViewCellのセルの高さを変更する方法
- rowHeightプロパティのtableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath)の使い方
- estimatedRowHeightとは?
- UITableView.automaticDimensionとは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
SwiftのUIKitでUITableViewCellのセルの高さを変更する方法をまとめていきます。UITableViewの使用方法については下記記事を参考にしてください。
UITableViewCellのセルの高さを変更する方法
UITableViewCellのセルの高さを変更する方法は2種類あります。
- UITableViewのrowHeightプロパティに値を格納する
- UITableViewDelegateプロトコルに準拠させデリゲートメソッドを実装する
rowHeightプロパティに値を格納
StoryboardのTable Viewをコード内の変数と@IBOutlet
を使って紐付けることで、UITableView
のrowHeight
プロパティの値を変更することができます。
class ListLocatorViewController:UIViewController ,UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = 100
}
}
UITableViewDelegateプロトコルに準拠させデリゲートメソッドを実装
TableViewのView ControllerがUITableViewDelegate
プロトコルに準拠させている場合は、func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath)
デリゲートメソッドを使用することでセルの高さを変更することができます。最終的に設定したい数値を返せばOKです。
class ListLocatorViewController:UIViewController ,UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
}
セルの高さを可変的に設定する
セルの高さを固定値ではなく、文字量などによって自動計算されるようにするには以下の2つのプロパティに値を設定します。
estimatedRowHeightプロパティ
セルの高さの推定値を設定するプロパティ。設定しておくと自動計算でのパフォーマンスを向上させることができます。
UITableView.automaticDimension
セルの高さを自動計算するように設定する値。
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = 50
tableView.rowHeight = UITableView.automaticDimension
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。