UITableView 部分 header 出现在 table header 视图上

UITableView section header appearing over table header view

我正在为 header 部分和 UITableView 的 table header 部分创建自定义视图。问题是剖面视图(绿色)出现在 table header 视图(红色)

table header 视图的代码是

self.headerImageView = [[UIView alloc] init];
self.headerImageView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = self.headerImageView;

我在这里设置它的框架

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.headerImageView.frame = CGRectMake(0, 0, CGRectGetWidth(self.tableView.frame), 100);
}

部分代码 header

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor greenColor];
    return view;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 40;
}

我做错了什么? 干杯

把代码都放在-(void)viewDidLoad里就好了,像这样:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.headerImageView = [[UIView alloc] init];
    _headerImageView.backgroundColor = [UIColor redColor];
    _headerImageView.frame = CGRectMake(0, 0, CGRectGetWidth(self.tableView.frame), 100);
    self.tableView.tableHeaderView = _headerImageView;
}

我发现 -(void)viewDidLayoutSubviews 在滚动 table 时会被多次调用。也许这就是问题所在。