- 如果你用xib加载headerView然后通过代码添加到tableView的header出现乱七八糟的事儿,比如布局算不准,比如点击事件无法响应,加下面这行代码
header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
- 用xib在tableView的xib中直接画header
首先在xib中拖一个UIVew进去,注意先拖入到与View并列处,如图:
然后将,这个View拖到File’s Ower 的那一并列层中,(按照箭头所指的方向拖拽即可)如图:
然后:
接下来的一步不要忘记:把刚刚的UIView的Simulated Metrics的Size设置成Freeform。(忘记此步骤下面就不成功了)
然后再将这个VIew拖入到TableView,还是按图箭头方向操作即可,如图:
完成后如图所示:
这个时候,该UIView会自动作为UITableView的tableHeaderView或tableFooterView了。
- 自动布局head
如果自定义的head里面约束上下完整,那么可以在VC中使用的时候,不用设置高度,
利用如下代码:
self.mineTableView.tableHeaderView = self.mineHeadView;
[self.mineHeadView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.offset(0);
make.width.offset(WIDTH_OF_SCREEN);
}];
- (void)viewDidLayoutSubviews {
CGFloat headHeight = [self.mineTableView.tableHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect newFrame = self.mineTableView.tableHeaderView.frame;
newFrame.size.height = headHeight;
self.mineHeadView.frame = newFrame;
// [self.mineHeadView mas_updateConstraints:^(MASConstraintMaker *make) {
// make.top.offset(newFrame.origin.y);
// }];
}
或者:
1, self.tableView.tableHeaderView = self.headV;
CGFloat headHeight = [self.headV systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect newFrame = self.headV.frame;
newFrame.size.height = headHeight;
self.headV.frame = newFrame;
2. 在headV填充数据后,再次设置:
CGFloat headHeight = [self.headV systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGRect newFrame = self.headV.frame;
newFrame.size.height = headHeight;
self.headV.frame= newFrame;
self.tableView.tableHeaderView = self.headV;