2

我有一个从 segue 模态呈现的视图控制器。其演示样式设置为表单。

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。 在此处输入图像描述

4

1 回答 1

0

更好地使用模式表示样式 overFullScreen 用于紧凑的水平尺寸类别,而将 formSheet 留给水平规则的类别。

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    if controller.traitCollection.horizontalSizeClass == .regular {
        return .formSheet
    }
    return .overFullScreen
 }
于 2019-03-13T17:31:18.767 回答