I’m writing an app that has a view with nested UITableViews. The UITableViews in the cells of the outer UITableView are rotated 90 degrees so that they scroll horizontally. The UITableViewCells in the main UITableView are of the class HorizontalTableViewCell.
UITableView
--------------------------------------------------
| | | |
| | | | HorizontalTableView
| > | > | > | (contained inside
| | | | UITableView's
| | | | UITableViewCell)
--------------------------------------------------
| | | |
| | | |
| > | > | > | |
| | | | \ /
| | | | "
--------------------------------------------------
| | | |
| | | |
| > | > | > |
| | | |
| | | |
--------------------------------------------------
When in portrait mode, I have the content spaced evenly by setting the HorizontalTableView’s width to the screen width in the initWithFrame: method.
I would like to increase the cell padding of the HorizontalTableView’s cells such that when the device is rotated to landscape mode, the 3 cells are resized to fit the entire screen, each taking up an equal amount of space.
However, the best I can seem to achieve is a HorizontalTableView of the same portrait width, but centered in the screen by the following bitmask (from HorizontalTableViewCell’s implementation file):
self.horizontalTableView.autoresizingMask =
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin;
This produces a large margin on both sides of the HorizontalTableView, effectively centering the cells, but the individual cell padding remains unchanged.
Any ideas on how I would go about doing this?
(Note that if the following bit mask is used, the cells fly out of view “through the top” of the HorizontalTableViewCell and cannot be seen again, even if the device rotates back to portrait mode).
self.horizontalTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
The only way I can think of is to create another view for the landscape mode. Throw your data into a holder object, load the new view, and then reload the data from the holder.