Après avoir joué avec pendant un certain temps, j'ai trouvé que le cadre et contentSize ne semblent pas pouvoir être mis ensemble comme:
self.tableView.contentSize = CGSizeMake(320, scrollHeight);
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,self.tableView.contentSize.height);
La tentative a été de définir une hauteur max de l'image, mais garder la possibilité de parcourir l'ensemble du contenu si il y avait un grand nombre de cellules. Ce hack fonctionne bien et peut être modifié avec d'autres conditions, en cas de besoin:
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);
}
Cela fonctionne pour vous. Vous devrez peut-être ajuster la autoresizingMask à l'intérieur de votre .xib ou dans votre code, mais ce hack est la seule solution que j'ai trouvé qui prend soin de tous les différentes variables dans mon cas.