如何在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中设置该视图的框架,