I have a UITableView with cells containing variable-height UILabels. I am able to calculate the minimum height the label needs to be using sizeWithFont:constrainedToSize:l
Your UITableViewController can implement the tableView:heightForRowAtIndexPath:
method to specify the row height for a particular row, and it can look at the current orientation ([[UIDevice currentDevice] orientation]
) to decide what height to return.
To make sure tableView:heightForRowAtIndexPath:
gets called again when the orientation changes, you'll probably need to
detect the orientation change as described in this question, and call [tableView reloadData]
.