The answer to part one (launching into landscape) is unchanged from iOS 7: everything depends on the order of possible orientations in the Info.plist file. So, let's say that View Controller 1 says this:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
Then we will coherently launch into landscape if a landscape orientation comes first in the Info.plist's supported interface orientations:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
</array>
One noteworthy change in iOS 8 is that by default the status bar is hidden when we're in landscape. But you can prevent this, if desired, with the appropriate override:
-(BOOL)prefersStatusBarHidden {
return NO;
}
That doesn't answer the second part of my question, which is how to force rotation when a view controller is presented. As I have explained in this answer, my sense is that this will become impossible in iOS 8. Your view controller and your views are expected to "adapt" — and so are you.
EDIT: It looks like in seed 4 the ability to force app rotation on view controller presentation/dismissal is returning!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…