Post

Replies

Boosts

Views

Activity

Reply to Best Practice to adopt iPhone Duo
Auto Layout is a good baseline, but a few UIKit things commonly break on Duo even in Auto Layout apps. First, reading the size once at launch (UIScreen.main.bounds, a cached width) goes stale when the window resizes. Apple lists "Reading size once at launch" as an anti-pattern: https://developer.apple.com/iphone-duo/prepare/ Second, branching on userInterfaceIdiom. Apple says the idiom stays .phone, so use size classes (outer display compact width, inner display regular width): https://developer.apple.com/design/human-interface-guidelines/designing-for-iphone-duo Third, the fold and cameras are reserved regions. UIView.reservedRegions(kind:options:) returns them, and UIKit tracks the regions you read in updateConstraints(): https://developer.apple.com/documentation/uikit/uiview/reservedregions(kind:options:) Fourth, the SDK you build with changes what the app gets (iOS 26 SDK: centered, iOS 27 SDK: fills the screen but avoids the status bar, iOS 27.1 SDK: edge to edge), so rebuild with Xcode 27.1 and test in Device Hub. I put a free, MIT-licensed checklist and a static scanner that flags these patterns in a Swift project together here, with every claim linked to an Apple page or labelled third-party: https://github.com/ilan-uzan/duo-ready (I'm the author.)
Topic: UI Frameworks SubTopic: UIKit Tags:
1w
Reply to Best Practice to adopt iPhone Duo
Auto Layout is a good baseline, but a few UIKit things commonly break on Duo even in Auto Layout apps. First, reading the size once at launch (UIScreen.main.bounds, a cached width) goes stale when the window resizes. Apple lists "Reading size once at launch" as an anti-pattern: https://developer.apple.com/iphone-duo/prepare/ Second, branching on userInterfaceIdiom. Apple says the idiom stays .phone, so use size classes (outer display compact width, inner display regular width): https://developer.apple.com/design/human-interface-guidelines/designing-for-iphone-duo Third, the fold and cameras are reserved regions. UIView.reservedRegions(kind:options:) returns them, and UIKit tracks the regions you read in updateConstraints(): https://developer.apple.com/documentation/uikit/uiview/reservedregions(kind:options:) Fourth, the SDK you build with changes what the app gets (iOS 26 SDK: centered, iOS 27 SDK: fills the screen but avoids the status bar, iOS 27.1 SDK: edge to edge), so rebuild with Xcode 27.1 and test in Device Hub. I put a free, MIT-licensed checklist and a static scanner that flags these patterns in a Swift project together here, with every claim linked to an Apple page or labelled third-party: https://github.com/ilan-uzan/duo-ready (I'm the author.)
Topic: UI Frameworks SubTopic: UIKit Tags:
Replies
Boosts
Views
Activity
1w