UITableView顶部空白解决方案

问题

在使用UItableView并设置stylegroup时,我们的UI界面通常会出现以下问题:
顶端出现了难以消除的空白

解决

  1. 设置TaleView的内容不自动适应布局

    1
    2
    3
    4
    5
    if (@available(iOS 11.0, *)) {
    _tableView.contentInsetAdjustmentBehavior= UIScrollViewContentInsetAdjustmentNever;
    } else {
    self.automaticallyAdjustsScrollViewInsets = NO;
    }
  2. 使用代理设定高度

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    // 可以根据需要设置每一个header的高度,不想显示可以设置为CGFLOAT_MIN
    if (section == 0) {
    return CGFLOAT_MIN;
    } else {
    return 50;
    }
    }


    // footer 高度
    - (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
    }
    // 下面代理方法中设置的 frame 不能真正的起作用
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
    }

    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
    }