Search code examples
iosswiftuiipadosswiftui-environmentswiftui-sheet

How to determine if a popover will be displayed as a popover or sheet in SwiftUI?


In SwiftUI when a popover is displayed, it will display as either a popover or sheet depending on the device (iPad or iPhone) and window space available.

Is there a correct heuristic to check if the popover will be displayed as a popover or a sheet?

For example, on iPad, a popover will show as a sheet when multitasking and vertical or when horizontal at quarter-screen size.


Solution

  • The answer here is that I needed to pass down horizontalSizeClass from the parent view that was presenting the popover. .environment(\.horizontalSizeClass, horizontalSizeClass) Without this, the child view was reading the horizontalSizeClass that was available to it (which is always compact within a popover).