我需要获得UITableView
的完整高度(即没有更多滚动的高度)。有没有办法做到这一点?
我已尝试[tableView sizeThatFits:CGSizeZero]
,但只返回0x0 CGSize
。
答案 0 :(得分:93)
尝试使用contentSize
方法,该方法继承自UITableView的超类UIScrollView。但是,您可能会发现contentSize
返回错误或过时的值,因此您可能应该先调用layoutIfNeeded
重新计算表的布局。
- (CGFloat)tableViewHeight
{
[tableView layoutIfNeeded];
return [tableView contentSize].height;
}
答案 1 :(得分:5)
强制性 Swift 3.0 & 2.2 回答。
var tableViewHeight: CGFloat {
tableView.layoutIfNeeded()
return tableView.contentSize.height
}
答案 2 :(得分:-1)
如果表视图行数已更改,并且您确实需要知道包含上次更改的表视图的内容大小,我没有发现layoutIfNeeded方法实际上有帮助。
经过一点点黑客攻击后,我开始知道如何强制表格视图重新计算其内容大小。在我的情况下,重置表视图框以使其正常工作就足够了:
- (CGSize)com_lohika_contentSize
{
CGRect theFrame = self.frame;
self.frame = CGRectZero;
self.frame = theFrame;
[self layoutIfNeeded];
return [self contentSize];
}
答案 3 :(得分:-1)
尝试传入不同的CGSize参数而不是CGSizeZero。 sizeThatFits:方法使用该参数来计算其结果。尝试从进行该调用的任何类中传入self.view.size。