My question essentially boils down to the best way to support dynamic heights of UILabel's (and I suppose other elements) in a UITableCell, and also correctly resize the label width/height and cell heights when rotating.
I'm aware of how to get the expected height of UILabels, and size the heights accordingly, but things seem to get pretty tricky when you support landscape orientation as well.
I'm thinking this might go the route of layoutSubviews, but I'm not sure how you would combine that with the table needing to calculate the height of cells. Another interesting post sets the frame manually on init to make sure they are doing calculations off a known quantity, but that only addresses part of the issue.
So here's an image of what I'm dealing with, with red arrows pointing to the dynamic height labels, and blue arrows pointing towards the cells that will change height.

I've managed to get it working correctly, but not sure if its the correct method.
Here's a few of the things I learned:
- The cell.frame in
cellForRowAtIndexPathalways gives its size in portrait mode. (ie. for the iphone app, it always reports 320). - Storing a prototype cell for reference in a property has the same issue, always in portrait mode
- autoresizing masks for the width of labels seem to be useless in this use case, and in fact cause issues with the calculated height on rotation
- The tableView.frame in
cellForRowAtIndexPathgives its size in the correct orientation - You need to call
[tableView reloadData]on rotation. I