Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

modalPresentationStyle formSheet issues on iphone XR, XS Max

I am displaying modal UIViewController with modalPresentationStyle = .formSheet but it has some issues on iphone XR and XS Max. It's displayed behind notch. Image bellow from left side iphone XR, XS, X.

enter image description here

UIViewController use autolayout and is presented like this:

let contentViewController = UINib(nibName: "EditViewController", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! EditViewController

let navController = UINavigationController(rootViewController: contentViewController)

navController.modalPresentationStyle = UIModalPresentationStyle.formSheet
let popover = navController.presentationController!
popover.delegate = self

self.present(navController, animated: true, completion: nil)

delegate:

extension MyController: UIAdaptivePresentationControllerDelegate {

    func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
        return .none
    }
}

There is same issue with modalPresentationStyle = .pageSheet. It works fine with other modalPresentationStyles ie fullscreen

It's on iOS 12.1, swift 3

Any idea how to fix this? Thanks

like image 923
Martin Vandzura Avatar asked Jan 09 '19 09:01

Martin Vandzura


1 Answers

UIKit does not support that.

The only possibilities are sheet to full screen and page sheet to form sheet on iPad. As specified in the documentation :

In a horizontally compact environment, this option behaves the same as UIModalPresentationFullScreen.

So UIKit already adapts it.

Unfortunately you will have to implement your own custom transition controller.

like image 141
GaétanZ Avatar answered Sep 20 '22 14:09

GaétanZ