1. 理想状态下的 tableHeaderView(见下图):

理想状态下的tableView.png
2. 但是有时候会出现这种情况(见下图):

tableHeaderView遮挡住cell01.png

tableHeaderView遮挡住cell02.png
3. 出现问题的代码
#pragma mark - 设置tableHeaderView - (void)setupTableHeaderView { UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor greenColor]; // 设置 tableHeaderView self.tableView.tableHeaderView = view; // 设置 view 的 frame view.frame = CGRectMake(0, 0, kScreenWidth, 90 * kScaleHeight); }

出现遮挡的代码.png
4. 破解之道
#pragma mark - 设置tableHeaderView - (void)setupTableHeaderView { UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor greenColor]; // 设置 view 的 frame(将设置 frame 提到设置 tableHeaderView 之前) view.frame = CGRectMake(0, 0, kScreenWidth, 90 * kScaleHeight); // 设置 tableHeaderView self.tableView.tableHeaderView = view; // // 设置 view 的 frame // view.frame = CGRectMake(0, 0, kScreenWidth, 90 * kScaleHeight); }

解决之道.png