使用动态类型时调整表头的大小

Lau*_*oiu 10 xcode storyboard uitableview swift

我有TableViewController一个标题.此标头是一个容器,它链接到另一个名为的故事板Header.storyboard

TableViewController

Header.storyboard 包含一些带有一些标签的堆栈视图,这些标签是动态类型的.

标签文本来自DB.

对文本维度或大小没有问题我想要正确地将其可视化.

在此输入图像描述

我已经使用SO的一些答案来正确调整标题大小,但没有运气:

import UIKit

class TableViewController: UITableViewController {

    @IBOutlet weak var tableHeaderView: UIView!

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // Dynamic sizing for the header view
        if let headerView = tableHeaderView {
            headerView.setNeedsLayout()
            headerView.layoutIfNeeded()

            let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
            var headerFrame = headerView.frame

            // If we don't have this check, viewDidLayoutSubviews() will get
            // repeatedly, causing the app to hang.
            if height != headerFrame.size.height {
                headerFrame.size.height = height
                headerView.frame = headerFrame
                tableHeaderView = headerView
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

BEN*_*oud 2

尝试实施

tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) 
Run Code Online (Sandbox Code Playgroud)

tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)
你的代码应该是这样的:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return tableHeaderView.bounds.size.height
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return tableHeaderView
}
Run Code Online (Sandbox Code Playgroud)