在自定义UIView内部自动调整UITableView的部分

时间:2017-02-03 07:46:59

标签: ios uitableview

我创建了UIViewController并在其上添加了UITableView(通过autolayout固定到所有四个边缘)。

然后我设置estimatedRowHeight(44)和rowHeightUITableViewAutomaticDimension)并返回5个自定义单元格。它起作用了。

现在,我想添加具有动态高度的自定义UITableViewHeaderFooterView

我正在做下一个:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 88.0
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return R.nib.orderStatusHeaderView.firstView(owner: self)!
}

我的OrderStatusHeaderView是一个xib视图,其上有UITableView,固定到所有4个自动布局边缘。

OrderStatusHeaderView

final class OrderStatusHeaderView: UITableViewHeaderFooterView {
    @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.dataSource = self
            tableView.delegate = self
            tableView.rowHeight = 44.0
        }
    }
}
extension OrderStatusHeaderView: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "\(indexPath.row)")
        cell.textLabel?.text = "\(indexPath.row)"
        cell.backgroundColor = .red
        return cell
    }
}

显示如下:

enter image description here

当我点击或滚动时,所有红色细胞都会消失。会是什么呢?如何让UITableView动态加载内容和UITableViewHeaderFooterView将自行调整大小以使其适合UITableView.contentSize。有可能吗?

2 个答案:

答案 0 :(得分:1)

退房:

tableView(_:estimatedHeightForFooterInSection:)

tableView(_:heightForFooterInSection:)

你也有headerInSection的等价物。

答案 1 :(得分:0)

由于您要求表的页眉和页脚视图,因此可以跳过您描述的委托方法。那些(顾名思义)是用于SECTION页眉和页脚。

当你设置一个使用AutoLayout作为表格页眉或页脚的视图时,它的框架仍然具有零高度(这就是为什么这种视图中的按钮不能正常工作,因为它们没有接收到触摸)。 / p>

要使用AutoLayout正确调整表格的页眉或页脚视图的大小,您必须应用技巧来实际自己计算高度,并再次设置headerView。在许多帖子中详细描述了这些:

https://stackoverflow.com/a/28102157/756039 https://gist.github.com/marcoarment/1105553afba6b4900c10 http://collindonnell.com/2015/09/29/dynamically-sized-table-view-header-or-footer-using-auto-layout/ http://roadfiresoftware.com/2015/05/how-to-size-a-table-header-view-using-auto-layout-in-interface-builder/

希望这有帮助。