Ios 自动调整UITableView高度以仅显示当前的UITableView单元格

Ios 自动调整UITableView高度以仅显示当前的UITableView单元格,ios,objective-c,cocoa-touch,uitableview,Ios,Objective C,Cocoa Touch,Uitableview,似乎,UITableView不会自动计算覆盖所有可见单元格所需的确切高度,相反,它会用空行替换任何额外区域 我想计算出只覆盖可见单元格所需的确切高度,以消除我的UITableView中那些难看的空行。我很清楚,这可以使用Interface Builder手动完成,但是必须有一种更有效、更动态的方法来解决此问题。使用以下代码获取set-cellHeight成员变量,并在需要时使用它 _cellHeight = floorf((CGRectGetHeight(self.tableView.bound

似乎,
UITableView
不会自动计算覆盖所有可见单元格所需的确切高度,相反,它会用空行替换任何额外区域


我想计算出只覆盖可见单元格所需的确切高度,以消除我的
UITableView
中那些难看的空行。我很清楚,这可以使用Interface Builder手动完成,但是必须有一种更有效、更动态的方法来解决此问题。

使用以下代码获取set-cellHeight成员变量,并在需要时使用它

_cellHeight = floorf((CGRectGetHeight(self.tableView.bounds))/5);
这应该给你们每行的高度,它将处理所有的情况。 上述代码必须在以下方法中使用

-(void)viewWillLayoutSubviews;
- (void)viewWillAppear:(BOOL)animated;

我希望这会有所帮助。

您可以使用表视图的内容大小来确定表需要多少空间

CGFloat height = myTableView.contentSize.height;

此<代码>高度将自动考虑页眉、页脚、单元格的大小和数量,以及其他内容。而且它是动态的,所以如果您决定将来使用7行表,它仍然可以正常工作,而且不需要更改代码。唯一需要更改的时间是,如果您在某个时候决定不再显示整个表格

还有一个快速提示-您可能还需要设置
[myTableView SetScrolEnabled:NO]
。如果用户确实尝试滚动,禁用滚动将阻止表格“反弹”——我只是认为,如果同时显示表格的所有内容,反弹看起来真的很愚蠢

然后,您可以使用此
高度来

  • 调整表视图上的约束(如果使用自动布局)
  • 调整表视图的
    框架
    (如果使用旧的弹簧和支柱方法)

分隔符本身不应为单元格添加任何高度……您使用的是分组视图还是普通UITableView?有头球吗?如果它是一个没有标题的普通tableview,那么您在上一段中描述的数学应该是正确的。它是一个普通的UITableView。但是它没有头球。那么也许你计算的平均高度不正确……你计算的是浮球吗?事实上,按照迈克的答案!不需要计算:)你知道吗?事实上,我昨晚也遇到了同样的问题……我最后一个牢房的后半部分因为某种原因被隐藏了起来。我通过关闭自动布局解决了这个问题。