UITabelView的headerVIew和footerView自适应

UITabelView有两个属性,是tableFooterView和tableHeaderView,这里面分别可以添加一个view,自动添加在tableview的头部和尾部。

self.tableView.tableFooterView = self.footerView;

我在这自定义了一个footerView属性,是uiview的子类,当我们赋值的时候,就需要footerView有自己的frame,一般我们自适应会用到masonry框架,masonry在make 约束的时候要求先添加控件,再添加约束,这里和tableview的footerView和headerView添加正好相反,所以有一些坑。

 

这里我们可以先添加约束,完成后再次设置tableview的tablefooterView属性,由于添加约束默认不是立即生效,所以我们这需要用到layoutIfNeeded属性,然后再添加。


    [self.tableHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.bottom.equalTo(self.addressView);
    }];
    [self.tableHeaderView layoutIfNeeded];
    self.tableView.tableHeaderView = self.tableHeaderView;

我这里在其他约束里已经把tableHeaderView的约束添加好了,所以这里面添加的比较少,大家根据自己需求。这样就可以把headerView添加。

 

上面的方法只是适用于tableview的添加,因为如果你添加的footerview一般都是独立的父控件,所以layoutIfNeed会把你的位置设置到页面的顶端

self.tableView.tableFooterView = self.tableFooterView;
CGSize size = [self.tableFooterView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
self.tableFooterView.frame = CGRectMake(0, 0, size.width, size.height);
self.tableView.tableFooterView = self.tableFooterView;

我们可以通过上面的方法获取footerView的size,然后赋值frame,再添加到tableFootView上,这里需要注意一下,tableFooterView这个视图不能用masonry设置,需要把其他视图添加到tableFooterView中,在其他视图中用masonry设置约束,然后调用上述代码,不然的话tableFooterView依旧会设置在顶端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值