gpt4 book ai didi

ios - UIPopoverPresentationControllerDelegate 协议(protocol)的 2 个 adaptivePresentationStyle 方法之间的区别

转载 作者:行者123 更新时间:2023-11-28 23:22:54 32 4
gpt4 key购买 nike

我正在使用弹出窗口 View Controller ,但我不希望弹出窗口覆盖整个屏幕 (iOS 13)。我试图使用:

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

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

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

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

最佳答案

根据文档:从 iOS 8.3 开始我们应该使用

adaptivePresentationStyle(for:traitCollection:)

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

UITraitCollection - The iOS interface environment, defined by traits such as horizontal and vertical size class, display scale, and user interface idiom.

如果我们不在委托(delegate)中实现此方法,UIKit 会调用

adaptivePresentationStyle(for:)

方法代替。

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

关于ios - UIPopoverPresentationControllerDelegate 协议(protocol)的 2 个 adaptivePresentationStyle 方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59363428/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com