如果您仍然遇到问题,请在不需要滚动视图的情况下尝试此操作。
在玩了一段时间 DBD 的示例后,我发现 frame 和 contentSize 似乎无法像这样设置在一起:
self.tableView.contentSize = CGSizeMake(320, scrollHeight);
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,self.tableView.contentSize.height);
尝试设置框架的最大高度,但如果有大量单元格,则保持滚动所有内容的能力。这个 hack 似乎运作良好,如果需要,可以用更多条件进行修改:
int cellCount = [YOURARRAY count];
CGFloat scrollHeight = cellCount*44+44;//for a cell with height of 44 and adding 44 if you have a toolbar at the bottom
self.tableView.contentSize = CGSizeMake(320, scrollHeight);//you can change the width and or let the .xib control the autoresizing
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && cellCount < 14)
{
//here's were you can add more conditions if you're in landscape or portrait, but this handles 14 cells with a heightForHeaderInSection of 46 in landscape
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,scrollHeight);
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && cellCount < 7)
{
//same as above but it's for the iPhone in portrait
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,scrollHeight);
}
这肯定有效。您可能需要在 .xib 或代码中调整 autoresizingMask,但这个 hack 是我发现的唯一解决方案,可以处理我的案例中的所有不同变量。