只写一些核心代码,写了一个Header的示例,footer是一样的逻辑
UIView *header = <yourHeader>;//这个要有内部的约束,垂直的支撑
CGRect frame = header.frame;
frame.size.width = self.tableView.frame.size.width;
header.frame = frame;
[header setNeedsLayout];
[header layoutIfNeeded]; //在设置宽度和内部约束后强制布局
CGFloat height = [header systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; //核心方法,获取高度,切记要先设置宽度
frame.size.height = height;
header.frame = frame;
self.tableView.tableHeaderView = header;