在没有滚动条的情况下获取UITableView的高度

时间:2010-03-27 03:44:36

标签: ios iphone uitableview cocoa-touch uikit

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

我已尝试[tableView sizeThatFits:CGSizeZero],但只返回0x0 CGSize

4 个答案:

答案 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。