iOS 9 TableView分组Header/Footer设置背景色

项目开发在测试阶段,突然发现一个问题,就是在iOS 9系统中UITableView的设置分组HeaderView或者FooterView背景色可能无用。做个笔记,记录一下,希望可以帮到一些同仁。

我在项目中是这样写的:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

    NSDictionary *dict = self.viewModel.dataSource[section][0];
    YDTitleValueTableHFView *head = [tableView dequeueReusableHeaderFooterViewWithIdentifier:[YDTitleValueTableHFView kk_reuseIdentifier]];
    head.contentView.backgroundColor = [UIColor yd_colorF3F3F3];
    head.titleLabel.font = [UIFont systemFontOfSize:12];
    head.titleLabel.textColor = [UIColor whiteColor];
    head.titleLeftMargin = 16;
    head.titleLabel.text = dict[@"pre"];
    return head;
}

但是我发现,设置head.contentView.backgroundColor在iOS9上貌似不起作用,经过测试,发现以下方式可以解决:

  1. 直接在代理方法中返回一个设置好背景色的View
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 10)];
    headerView.backgroundColor = [UIColor whiteColor];
    return headerView;
}
  1. 设置UITableViewHeaderFooterViewbackgroundView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

    UITableViewHeaderFooterView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:[UITableViewHeaderFooterView kk_reuseIdentifier]];
    view.backgroundView = ({
        UIView *view = [[UIView alloc] init];
        view.backgroundColor = [UIColor whiteColor];
        view;
    });
    return view;
}

你可能感兴趣的:(iOS 9 TableView分组Header/Footer设置背景色)