如何用约束设置UITableView的tableHeaderView,其中tableHeaderView的高度是动态变化的

用约束设置UITableView的tableHeaderView,是个常见需求。步骤如下:
1,自定义视图,作为UITableView的tableHeaderView。视图的布局用约束实现。另外要实现UIView基类的两个函数:

函数1:计算视图的大小。当用户调用视图的SizeToFit方法时会调用该方法计算大小。
override func sizeThatFits(_ size: CGSize) -> CGSize {
        let contentSize = self.intrinsicContentSize
        return CGSize(width: size.width, height: contentSize.height)
    }
函数2:视图的内在大小。为sizeThatFits提供实际的宽、高。
override var intrinsicContentSize: CGSize {
        var height: CGFloat
            height = MyJourneyHeaderView.kMapViewHeight + kMapBtnHeight + kVerticalPadding + MyJourneyHeaderView.tableViewHeight + kVerticalPadding + (self.showAdView ? MyJourneyHeaderView.kAdViewHeight : 0)
        return CGSize(width: CGFloat(UIViewNoIntrinsicMetric), height: height)
    }

2,创建自定义视图的对象后,设置其frame。

self.tableHeaderView.frame = CGRect(x: 0, y: 0, width: kScreenWidth,
                                            height: self.tableHeaderView.intrinsicContentSize.height)

3,设置头部视图

self.tableView.tableHeaderView = self.tableHeaderView

4,头部视图数据变化后更新

self.tableHeaderView.sizeToFit()
self.tableHeaderView.frame = CGRect(x: 0, y: 0, width: kScreenWidth, height: self.tableHeaderView.intrinsicContentSize.height)
self.tableView.tableHeaderView = self.tableHeaderView
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值