Controlling sheet presentation across iPhone Duo poses

I'm adapting modal sheet presentation for iPhone Duo. My root is a UITabBarController, and I present detail view controllers with present(_:animated:) using .pageSheet / UISheetPresentationController. I want to confirm how much of the sheet's placement and sizing I can control as the device moves between poses, and which APIs are the intended levers versus behavior the system owns.

1. Closed pose — constraining sheet width away from the edges

With modalPresentationStyle = .pageSheet in a horizontally compact layout, the sheet spans the full width. Is there a supported way to constrain its width so it doesn't run edge-to-edge — e.g. via the presented controller's preferredContentSize, a .formSheet style, or a custom UIPresentationController with an overridden frameOfPresentedViewInContainerView? Does UISheetPresentationController honor a preferred width, or is width strictly derived from the container's size class?

2. Partial open — targeting which arrangement the sheet presents over

When the device is partially open and multiple arrangements are visible, can I influence which arrangement (leading vs. trailing) the sheet is presented in? Does the presentation container respect reserved regions and the current UIArrangement, and is there a recommended way to anchor a modal presentation to a specific arrangement — or is the presenting view controller's location in the hierarchy the only determinant?

3. Fully open — driving large vs. compact sheet sizing

When fully unfolded with the additional horizontal space, is detents the correct mechanism to switch between a compact and expanded sheet (e.g. .medium(), .large(), or a .custom detent resolved via UISheetPresentationController.Detent.custom)? Should selectedDetentIdentifier be updated in response to trait changes, and is sheetPresentationController.widthFollowsPreferredContentSizeWhenEdgeAttached relevant here?

General question: Should all of the above be driven by observing UITraitCollection changes (size classes) via traitCollectionDidChange(_:) / the trait registration APIs, or is there dedicated iPhone Duo API tied to the hinge angle and arrangements that I should adopt for sheet presentation instead?

Sheets automatically adapt to the way a person holds iPhone Duo. Use the preferredPlacement property on UISheetPresentationController to influence this adaptation.

Whether to update custom sheet detents on size class changes really depends on the content of your sheets, but using traitCollectionDidChange is the appropriate way to respond to size class changes if needed.

If the existing sheet sizing APIs aren't sufficient for your use case, please file a Feedback detailing the use case.

Controlling sheet presentation across iPhone Duo poses
 
 
Q