编辑:我发现一个更简单的方法来避免最后一部分和表页脚之间的差距是实现 heightForFooterInSection 并返回一个非常小的值而不是 0。这将导致什么都不可见。
出于某种原因,返回 0 不会抑制在分组样式表视图中呈现节页脚,它会尝试呈现 1 点页脚。StackOverflow 上有关于此的其他讨论。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return CGFLOAT_MIN;
}
我能够以一种有点 hacky 的方式完成此任务,但它似乎工作正常。
我的技巧只是将您想要的实际页脚视图放置在包装视图中,框架位置为 (0, -1)。
假设您有一个要使用的表格页脚视图,一个名为 MyTableFooterView 的类。
在这种情况下,您可以执行以下操作:
//This is the view we will actually add as the table footer
//We make it one point shorter since the content will be shifted up
//one point out of its frame
CGRect footerFrame = CGRectMake(0, 0, self.tableView.width, myFooterHeight-1);
UIView* tableFooterWrapper = [[UIView alloc] initWithFrame:footerFrame];
//This is the view that we are trying to use as a table footer.
//We place it 1 point up inside the wrapper so it overlaps that pesky 1-point separator.
CGRect contentFrame = CGRectMake(0, -1, self.tableView.width, myFooterHeight);
UIView* footerContent = [[MyTableFooterView alloc] initWithFrame:contentFrame];
//Make sure the footer expands width for to other screen sizes
footerContent.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[tableFooterWrapper addSubview:footerContent];
self.tableView.tableFooterView = tableFooterWrapper;
这对我来说很可靠。可能有一种更惯用的方式,但我还没有遇到过。