【问题标题】:Modal UIViewController with presentation style formSheet is not displayed correctly on iPhone XS Max and iPhone XR具有演示样式 formSheet 的模态 UIViewController 在 iPhone XS Max 和 iPhone XR 上无法正确显示
【发布时间】:2018-10-10 11:28:20
【问题描述】:

我有一个从 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。

【问题讨论】:

  • 你找到解决办法了吗?
  • 很遗憾没有
  • 你能提供一些关于如何使用布局约束的代码吗?

标签: ios uikit modalviewcontroller iphone-xs-max iphone-xr


【解决方案1】:

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

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    if controller.traitCollection.horizontalSizeClass == .regular {
        return .formSheet
    }
    return .overFullScreen
 }

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 2019-02-18
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多