Ios 计算UITableView框架高度

Ios 计算UITableView框架高度,ios,objective-c,uitableview,uipopovercontroller,Ios,Objective C,Uitableview,Uipopovercontroller,iOS7之前,我会使用这段代码计算UITableView的大小,然后设置它的tableView.contentSizeForViewInPopover:(这是我的UIPopoverController类别中的类方法): +(CGFloat)createContentHeighForTableViewController:(UITableViewController*)viewController{ CGFloat tableViewHeight=0; 对于(int i=0;iPOPOVER_SI

iOS7之前,我会使用这段代码计算UITableView的大小,然后设置它的
tableView.contentSizeForViewInPopover:
(这是我的
UIPopoverController
类别中的类方法):

+(CGFloat)createContentHeighForTableViewController:(UITableViewController*)viewController{
CGFloat tableViewHeight=0;
对于(int i=0;i<[viewController.tableView numberOfSections];i++)
{
CGRect sectionRect=[viewController.tableView rectForSection:i];
tableViewHeight+=sectionRect.size.height;
}
如果(tableViewHeight>POPOVER_SIZE.height){
返回POPOVER_SIZE.height;
}
否则{
返回表视图高度;
}
}
它并不完美,但可以很好地工作:

当我向下滚动时,它会将
tableView
向后拉,并停留在图片中的位置

这就是为什么我说我的代码工作得很好:

这是向上滚动的结果,其中一些
tableview
稍微超出视图

移动到iOS7并使用相同的代码,结果如下:

这是默认设置,不带任何滚动


很明显,我的内容太小了。如何更好地计算tableView的大小?

在我看来,高度实际上是正确的。您是否已检查顶部下方的栏、底部下方的栏,并调整滚动视图插图以确保它们都已关闭?另一个可能有用的方法是禁用完全适合popover的tableview的滚动。这也将缓解你在iOS 6上看到的问题。因为我不知道“顶部/底部栏”是什么,不知道。这些是什么?我如何检查它们?请从这里开始回答:
+(CGFloat)createContentHeighForTableViewController:(UITableViewController *)viewController {
    CGFloat tableViewHeight = 0;

    for (int i = 0; i < [viewController.tableView numberOfSections]; i++)
    {
        CGRect sectionRect = [viewController.tableView rectForSection:i];

        tableViewHeight += sectionRect.size.height;
    }

    if (tableViewHeight > POPOVER_SIZE.height){
        return POPOVER_SIZE.height;
    }
    else {
        return tableViewHeight;
    }
}