When presenting a UIViewController
modally after iOS 13, the presentingViewController
gets pushed down to also look like a view in the stack like seen in this image:
But in Apple Maps, for example, this does not happen. The presentingViewController
stays full screen:
I would like to achive the same modal presentation style as in Apple Maps. Has anyone got this working?
I have obviously searched stack overflow and the entire web, looked at every property on UIViewController
and UISheetPresentationController
, tried setting the modalPresentationStyle
of the presentingViewController
to fullScreen
and overFullScreen
(which I rightly assumed before trying wouldn't work).
The correct answer to this question sadly seems to be that there is no way to do this without either completely reimplementing UISheetPresentationController
or presenting it on another UIWindow
.
Thanks to @HangarRash, I found out that there is a workaround that works 90% of the time though: Instead of adding the .large()
detent, adding a detent with a ever so slightly smaller value makes the view look like it does in Apple Maps:
UISheetPresentationController.Detent.custom(identifier: "almostLarge") { context in
return context.maximumDetentValue - 0.1
}
The only downside to this is that it does not solve the unwanted UI behaviour when a text input is selected inside of the sheet. For the span of time where it is selected only, the sheets will look like they do in my first image again.