似乎UITableView
不会自动计算覆盖所有可见单元格所需的确切高度,而是用空行代替任何额外区域。
我想计算仅覆盖可见细胞所需的确切高度,以便清除那些丑陋的空行UITableView
。我很清楚这可以使用Interface Builder手动完成,但是必须有一个更有效和动态的方法解决这个问题。
答案 0 :(得分:5)
您可以使用表格视图的内容大小来确定表格所需的空间。
CGFloat height = myTableView.contentSize.height;
这个height
会自动考虑页眉,页脚,单元格的大小和数量,以及其他任何内容。而且它都是动态的,所以如果你决定将来去7行表,它仍然可以正常运行而不需要改变那段代码。您需要更改它的唯一时间是,如果您在某个时候决定不再需要显示整个表格。
快速提示 - 您可能还想设置[myTableView setScrollEnabled:NO]
。禁用滚动会阻止表格弹出"弹跳"如果用户确实尝试滚动它 - 我只是认为如果表中的所有内容一次显示,弹跳看起来真的很傻。
然后,您可以将此height
用于
frame
(如果使用旧的弹簧和支柱方法)答案 1 :(得分:0)
使用以下代码获取set cellHeight成员变量并在需要时使用它。
_cellHeight = floorf((CGRectGetHeight(self.tableView.bounds))/5);
这应该给你每行的高度,它将处理所有情况。 上述代码必须用于以下方法。
-(void)viewWillLayoutSubviews;
- (void)viewWillAppear:(BOOL)animated;
我希望这会有所帮助。