获取UITableView的高度而不用滚动条

我需要得到UITableView的全部高度(即没有更多的滚动的高度)。 有没有办法做到这一点?

我试过[tableView sizeThatFits:CGSizeZero] ,但是只返回一个0x0 CGSize

尝试contentSize方法,它是从UITableView的超类UIScrollViewinheritance的。 但是,您可能会发现contentSize返回的是错误的或过期的值,因此您应该先调用layoutIfNeeded来重新计算表格的布局。

 - (CGFloat)tableViewHeight { [tableView layoutIfNeeded]; return [tableView contentSize].height; } 

强制Swift 3.02.2的答案。

 var tableViewHeight: CGFloat { tableView.layoutIfNeeded() return tableView.contentSize.height } 

如果表视图的行数发生了变化,而且确实需要知道包含上次更改的表视图的内容大小,我没有发现layoutIfNeeded方法实际上有帮助。

经过一些黑客攻击后,我开始知道如何强制表格视图重新计算其内容大小。 在我的情况下,这足以重置表视图框架,使其工作:

 - (CGSize)com_lohika_contentSize { CGRect theFrame = self.frame; self.frame = CGRectZero; self.frame = theFrame; [self layoutIfNeeded]; return [self contentSize]; } 

尝试传递一个不同的CGSize参数,而不是CGSizeZero。 sizeThatFits:方法使用该参数来计算其结果。 尝试从任何类进行调用传递self.view.size。