如何在UITableView中设置表头的高度?

我已经通过关于UITableView类和委托引用的苹果文档,但无法find明确设置表头高度的方式。

我使用下面的代表设置表单元格高度:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

并使用以下代表设置节标题/页脚高度。

 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 

任何人都可以请帮我设置表头/页脚高度?

谢谢。

只需设置tableHeaderView的框架属性即可。

我发现了一个很好的黑客。 修改框架之后添加下面的行

 self.tableView.tableHeaderView = self.tableView.tableHeaderView; 

诀窍是(我认为)当您将视图分配给tableHeaderView属性时,UITableViewcaching高度(实际上是帧)。 上面的行再次指定高度。

 override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() sizeHeaderToFit() } func sizeHeaderToFit() { let headerView = tableView.tableHeaderView! headerView.setNeedsLayout() headerView.layoutIfNeeded() let height = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height var frame = headerView.frame frame.size.height = height headerView.frame = frame tableView.tableHeaderView = headerView } 

更多细节可以在这里find

如果你仍然需要它,你有没有尝试设置属性

 self.tableView.tableHeaderView 

如果你计算你需要的高度,并为tableHeaderView设置一个新的视图:

 CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = newHeight; self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:frame]; 

它应该工作。

只有当我将tableview的页脚/标题设置为零时,它才能和我一起工作:

 self.footer = self.searchTableView.tableFooterView; CGRect frame = self.footer.frame; frame.size.height = 200; self.footer.frame = frame; self.searchTableView.tableFooterView = nil; self.searchTableView.tableFooterView = self.footer; 

确保self.footer是防止页脚视图被释放的强有力的参考

使用表视图的默认属性:

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

谢谢

只需使用构造函数UIView(frame:_)创build页脚包装视图,然后如果您使用的是xib文件的FooterView,从xib创build视图,并添加为子视图包装视图。 然后将包装分配给tableView.tableFooterView = fixWrapper

  let fixWrapper = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 54)) // dont remove let footer = UIView.viewFromNib("YourViewXibFileName") as! YourViewClassName fixWrapper.addSubview(footer) tableView.tableFooterView = fixWrapper tableFootterCostView = footer 

这对我来说非常合适! 关键是用构造函数(frame:_)创build页脚视图。 即使您创buildUIView()并分配框架属性,它可能无法正常工作。

如果在IB中添加视图作为表格标题视图,则在标签5(大小检查器)中在IB中设置该视图的框架,