我使用的是弹出窗口视图控制器,我不希望弹出窗口覆盖全屏(iOS 13)。我正在尝试使用:
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
被调用的方法,但是显示的弹出窗口始终是全屏的,即使指定了较小的首选内容大小。经过大量时间尝试许多不同的事情后,我发现还有另一种方法具有2个参数并使用了它:
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
使用此方法可使弹出窗口成为指定的大小。任何人都知道为什么第二个可以工作而第一个不工作。我还有另外两个应用程序正在使用第一个应用程序,没有问题,这有什么用呢?!
由于文档:从iOS 8.3开始,我们应该使用
处理所有性状变化。哪里
UITraitCollection-iOS界面环境,由诸如水平和垂直大小类,显示比例和用户界面习惯用法之类的特征定义。
[如果我们未在委托中实现此方法,则UIKit会调用
方法代替。
因此,我猜您在您的应用中尝试使用UITraitCollection horizontalSizeClass,verticalSizeClass,displayScale和userInterfaceIdiom属性创建自适应接口并访问特定特征值。这就是为什么您应该实现adaptivePresentationStyle(for:traitCollection:)。