Hello,
In Apple’s Tech Talk Prepare your app for iPhone Duo, Apple mentions that on the Duo internal display, supported interface orientations are not honored unless UIRequiresFullScreen is enabled, in which case the app is scaled.
I first tested the behavior described by Apple. With UIRequiresFullScreen enabled, I returned .portrait from UIWindowSceneDelegate.supportedInterfaceOrientations(for:), added only UIInterfaceOrientationPortrait in Info.plist, and the app remained upright, using letterboxing as needed, which matched Apple’s description.
However, if I add all interface orientations in Info.plist while the scene delegate still returns .portrait, the app becomes fullscreen and locked in portrait orientation, like a portrait-only app, which seems to diverge significantly from the behavior described in the Tech Talk.
I then tested most possible combinations and observed five distinct behaviors:
- Normal: Auto-rotated, always fullscreen
- B-Portrait: Auto-rotated, fullscreen in portrait; portrait letterboxed in landscape
- B-Landscape: Auto-rotated, fullscreen in landscape; landscape letterboxed in portrait
- L-Portrait: Locked in portrait
- L-Landscape: Locked in landscape
But no rule seems to explain how a given combination determines the resulting behavior. Not even AI could figure out a sane one.
Does anyone have any idea how this works?