TaillookTech

モバイルアプリ開発を追っています

TableViewのHeaderとFooterのサイズを動的に変更する

環境

  • Swift4
  • Xcode9

概要

Storyboard上でTableViewにHeaderViewを追加し実行するとUILabel等の高さが変わる時にHeaderViewの高さが変わらずにSubViewが途切れてしまった.
UITableViewController().viewWillLayoutSubviews()をオーバーライドしてコードを追加し,これを解決する.

Example

MyTableViewController.swift

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    
    if let headerView = tableView.tableHeaderView {
        let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
        
        if height != headerView.frame.size.height {
            tableView.tableHeaderView?.frame.size.height = height
        }
    }
}