0

我正在使用一个弹出视图控制器,我不希望弹出窗口覆盖全屏(iOS 13)。我试图使用:

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

正在调用该方法,但显示的弹出框始终为全屏,即使指定了较小的首选内容大小。经过大量时间尝试许多不同的事情后,我发现还有另一种具有 2 个参数的方法并使用了它:

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

使用此方法使弹出屏幕成为指定的大小。任何人都知道为什么第二个会起作用而第一个不会。我有几个其他应用程序,我在其中使用第一个没有问题,什么给出?!

4

1 回答 1

1

由于文档:从 iOS 8.3 我们应该使用

自适应PresentationStyle(for:traitCollection:)

处理所有特征变化。在哪里

UITraitCollection - iOS 界面环境,由水平和垂直大小类、显示比例和用户界面习惯用法等特征定义。

如果我们没有在委托中实现这个方法,UIKit 会调用

自适应PresentationStyle(for:)

代替方法。

所以我猜在你的应用程序中,你尝试创建一个自适应界面并使用 UITraitCollection Horizo​​ntalSizeClass、verticalSizeClass、displayScale 和 userInterfaceIdiom 属性访问特定的特征值。这就是为什么你应该实现adaptivePresentationStyle(for:traitCollection:)

于 2019-12-16T22:00:54.553 回答