我有一个模块化的视图控制器。其演示样式设置为表单。
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .formSheet
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
segue.destination.presentationController?.delegate = self
}
在iPhone X和iPhone 8 Plus上,它按预期工作,在iPhone Xs Max和Xr上,控制器的宽度受到尊重,但高度被严格拉伸。我无法确认这是否是模拟器错误,iOS错误或预期的行为,因为我自己没有Xs Max。
更好地使用模式表示样式overFullScreen用于紧凑的水平尺寸类,并将表单Sheet保留为水平常规类。
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
if controller.traitCollection.horizontalSizeClass == .regular {
return .formSheet
}
return .overFullScreen
}