Using interface builder in xcode and just one .xib file, how can I create alternate layouts when rotating between landscape and portrait orientations?
See diagram of differing layouts
N.b. the green view/area would contain 3 items flowing horizontal in landscape and in portrait those 3 items would flow vertically within the green view/area.
Best Answer
A way to do this is to have three views in your .xib file. The first one is the normal view of your Viewcontroller with no subviews.
Then you create the views for portrait and landscape as you need them. All three have to be root-level views (have a look at the screenshot)
In your Viewcontroller, create 2 IBOutlets, one for the portrait and one for the landscape view and connect them with the corresponding views in the interface builder:
The third view,
_currentView
is needed to keep track of which one of these views is currently being displayed. Then create a new function like this:You will need to call this function from two different places, first for initialization:
And second for orientation changes:
Hope that helps you!