UIPopoverPresentationControllerDelegate协议的2个适应性PresentationStyle方法之间的区别

问题描述 投票:0回答:1

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

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

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

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

使用此方法可使弹出窗口成为指定的大小。任何人都知道为什么第二个可以工作而第一个不工作。我还有另外两个应用程序正在使用第一个应用程序,没有问题,这有什么用呢?!

ios swift uipopovercontroller uimodalpresentationstyle uipresentationcontroller
1个回答
1
投票

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

adaptivePresentationStyle(for:traitCollection:)

处理所有性状变化。哪里

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

[如果我们未在委托中实现此方法,则UIKit会调用

adaptivePresentationStyle(for:)

方法代替。

因此,我猜您在您的应用中尝试使用UITraitCollection horizo​​ntalSizeClass,verticalSizeClass,displayScale和userInterfaceIdiom属性创建自适应接口并访问特定特征值。这就是为什么您应该实现adaptivePresentationStyle(for:traitCollection:)

© www.soinside.com 2019 - 2024. All rights reserved.