iPhone Dev - 如何使UITableView具有适合其中所有单元格的精确高度

时间:2011-07-18 19:37:48

标签: iphone objective-c uitableview

我有以下内容:

http://i.imgur.com/0nDcS.png

我想这样做,以便tableview停在“So”单元格,而不是在它下面的所有空白单元格(大计划是有一堆多项选择问题,如那张照片中的那个,在一个scrollview上彼此重叠)。我猜我需要设置tableView的框架,但我想知道是否有一种简单的方法可以在运行时计算实现单元格的tableview部分的精确高度(图片中带有文本的部分)。这很棘手,因为我做了它,以便每个单元格的高度可以改变以适应其中的文本量。有人有什么建议吗?

3 个答案:

答案 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)。也许为分隔符添加一点。