我正在使用modalPresentationStyle = .formSheet显示模式UIViewController,但在iPhone XR和XS Max上存在一些问题。显示在缺口的后面。左侧iPhone XR,XS,X的图像波纹管。
UIViewController使用自动布局,并且显示如下:
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)
委托:
extension MyController: UIAdaptivePresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
}
modalPresentationStyle = .pageSheet也存在相同的问题。它可以与其他modalPresentationStyles(即全屏)配合使用
它在iOS 12.1上,迅捷3
有人知道如何解决此问题吗?谢谢
答案 0 :(得分:1)
UIKit不支持。
在iPad上,唯一的可能性是sheet to full screen
和page sheet to form sheet
。如文档中所指定:
在水平紧凑的环境中,此选项的行为与UIModalPresentationFullScreen相同。
因此,UIKit已经对其进行了调整。
不幸的是,您将必须实现自己的自定义过渡控制器。
答案 1 :(得分:0)
正如GaétanZ所说,最好使用另一种模式表示样式(如overFullScreen)来处理紧凑的水平尺寸小节,而将formSheet留给水平规则的样式。
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
if controller.traitCollection.horizontalSizeClass == .regular {
return .formSheet
}
return .overFullScreen
}