TableViewHeaderView自适应问题

2,063 阅读1分钟

不同手机屏幕上他的headerView的实际高度是不同的,需要自适应高度,直接在viewDidLoad方法内给出高度,会出现问题,但是每次[tableView reload]就会正常.

// 1. 在ViewDidLoad内写代码逻辑
 ChoseAgentSignUpView *agentView = [[[NSBundle mainBundle]loadNibNamed:@"ChoseAgentSignUpView" owner:self options:nil]lastObject];
//    agentView.frame = CGRectMake(0, 0, ScreenWidth, agentView.height);可以去掉
    self.agentView = agentView;
    [self.mainTableView setTableHeaderView:agentView];



// 2. 在viewDidLayoutSubviews内重新布局
- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
//    [self setupUI1];
    //利用systemLayoutSizeFittingSize:计算出真实高度
    CGFloat height = [self.mainTableView.tableHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect headerFrame = self.mainTableView.tableHeaderView.frame;
    headerFrame.size.height = height + 20;
    //修改tableHeaderView的frame
    self.mainTableView.tableHeaderView.frame = headerFrame;
}