TableView的contentSize是會走tableview 的代理方法動態計算,不需要我們手動去設置。當我們要為TableView添加header時請記得先設置兩個代理后,再添加header ,否則你會發現TableView底部會多出一塊空白。
上錯誤代碼,這樣會底部會多出一塊空白
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, self.view.height) style:UITableViewStyleGrouped]; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.tableHeaderView = self.headerView;
_tableView.tableHeaderView.height = self.headerView.height;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.showsHorizontalScrollIndicator = NO;
_tableView.dataSource = self;
_tableView.delegate = self;
正確代碼
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, self.view.height) style:UITableViewStyleGrouped]; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.dataSource = self;
_tableView.delegate = self;
//添加tableHeaderView在_tableView.dataSource = self后
_tableView.tableHeaderView = self.headerView;
_tableView.tableHeaderView.height = self.headerView.height;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.showsHorizontalScrollIndicator = NO;
原因是當你先設置TableView添加header時,我們會發現TableView會把contentSize設置得比本來的高度高一點,比如真實內容是H1的高度,但現在是H2 >H1.再設置代理的話,通過走TableView的代理方法設置的contentSize會在H2的基礎上進行計算的,這樣到最后刷新完,contentSize就會比真實的內容大一點了。