我有以下内容:
我想这样做,以便tableview停在“So”单元格,而不是在它下面的所有空白单元格(大计划是有一堆多项选择问题,如那张照片中的那个,在一个scrollview上彼此重叠)。我猜我需要设置tableView的框架,但我想知道是否有一种简单的方法可以在运行时计算实现单元格的tableview部分的精确高度(图片中带有文本的部分)。这很棘手,因为我做了它,以便每个单元格的高度可以改变以适应其中的文本量。有人有什么建议吗?
答案 0 :(得分:12)
您可以使用两个appproach。
最好也是最简单的。
1.向表格添加页脚视图,以便它不会在最后一行之后绘制行。一个空白的页脚视图可以。
//Add empty view to hide trailing row seperators
UIView *emptyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)];
emptyView.backgroundColor = [UIColor whiteColor];
[tableView setTableFooterView:emptyView];
[emptyView release];
2.检查tableview中有多少行并计算tableheight并更改表视图的框架。
答案 1 :(得分:2)
如果您正在寻找,则没有tableView:sizeOfAllCells:
功能。根据您的问题,您可以调整桌子的大小,以便将其他内容放在底部。
你说的是你想改变UITableView的frame属性以匹配高度。
[table setFrame:CGRectMake(0,0,table.frame.size.width,heightOfCells)];
但是你可以做一些事情。如果你有一个包含所有单元格的数组,你可以快速地遍历它并添加每个单元格的高度。你可以(虽然我不特别推荐它)循环使用tableView:cellForRowAtIndex:
而不是拥有一组单元格的段数和行数,然后通过这种方式获得高度。如果每个单元格都是相同的高度(听起来可能不是这样),你可以做一些简单的数学来计算高度。最后,您可以保留字典或高度数组并在tableView:cellForRowAtIndex:
中更新它,因此如果内容发生更改,则会更新大小,但您必须调用reloadData
。这些只是解决这一特定问题的几种方法。
答案 2 :(得分:1)
这是一个黑客(等等,看看是否有更好的解决方案):
使用numberOfSections
获取部分数量(如果您以后更改为分组样式),然后为每个部分添加height
rectForSection:
个风格,只需要rectForSection:0
)。也许为分隔符添加一点。