Unity has shipped no iPhone Duo support. What follows is our analysis of how a Unity iOS build behaves against Apple’s documented behaviours.
Games have a harder problem than apps here, because a game usually renders to a fixed-aspect surface and treats resolution as a launch-time constant.
Resolution changes while running
On iPhone Duo, Screen.width and Screen.height change during play — when the device is folded or unfolded, when the app moves between displays, and when Split View is resized. Anything cached at Start() is stale from that moment.
// Poll for changes rather than caching once
void Update() {
if (Screen.width != _lastW || Screen.height != _lastH) {
_lastW = Screen.width; _lastH = Screen.height;
RebuildLayout();
}
}
Camera viewport rects, canvas scalers, and any render texture sized from screen dimensions all need recomputing on that event.
Safe area
Screen.safeArea is the right API and it works. The trap is the same as native: code that takes one horizontal inset and applies it to both edges. On iPhone Duo the two differ, so use the rect directly rather than deriving a single margin from it.
Aspect ratio
The inner display is roughly 1.42 — much squarer than the 2.17 most mobile games are tuned for. A game that letterboxes to a fixed aspect will leave large bands; one that extends the camera frustum will show more of the world than the level was designed to reveal. Decide which, deliberately, per scene.
Lifecycle
Folding the device can move your app between displays without backgrounding it. A game that pauses on OnApplicationPause and resumes only on explicit focus can appear frozen. Test fold and unfold during active play, not just from a menu.
Reserved regions
The hinge division region has no Unity binding. Reaching it requires a native plugin wrapping the Swift API. For most games the practical mitigation is simpler: keep critical HUD elements away from the horizontal centre band of the screen when running on a foldable.