在项目中搭建一个较复杂的首页。因为用xib搭建代码比较快。所有在创建tableViewHeaderView的时候通过xib来创建的。
BaseTableViewHeaderView *baseHeaderView = [[[NSBundle mainBundle]loadNibNamed:@"BaseTableViewHeaderView" owner:self options:nil]firstObject];
self.tableView.tableHeaderView = baseHeaderView;
但是创建好之后。直接给获取到的view的frame在很多情况下都是有问题的。
有些时候高度不对应。当切换不同的手机型号的时候高度差距很大。
通过设置view的frame很多时候并不能很好的去限定tableView的头视图和底部视图。
baseHeaderView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 120);
通过无意的试验发现如果通过创建一个普通的view。然后将通过xib创建的headerView添加到上面。然后将普通的view作为tableView的头视图或者尾视图。那么就可以顺利的设置他的frame
BaseTableViewHeaderView *baseHeaderView = [[[NSBundle mainBundle]loadNibNamed:@"BaseTableViewHeaderView" owner:self options:nil]firstObject];
baseHeaderView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 120);
UIView *baseView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 100)];
[baseView addSubview:baseHeaderView];
self.tableView.tableHeaderView = baseView;
当然我们可以直接通过masonry添加约束。直接通过代码创建头视图和尾视图。