如何知道何时使用'form sheet'模式表示样式呈现视图控制器



当以模式呈现视图控制器时,我们可以将modalPresentationStyle设置为.formSheet

在水平规则环境中,视图控制器的大小使其内容区域小于屏幕大小,并且调暗视图放置在内容下方...

在水平紧凑的环境中,此选项的行为与 UIModalPresentationStyle.fullScreen 相同。

我希望我的模式呈现视图控制器根据它是以这种减小宽度的表单样式呈现还是以全屏呈现来更新其布局。但是模态的水平尺寸等级总是compact,即使在iPad Pro上横向全屏时也是如此。

呈现视图控制器的水平大小类可以告诉我我需要知道什么(正如上面提到的 Apple 文档)。但这意味着观察每个视图控制器中 traitCollection 的变化,而不是可以呈现我的模态,以便将它们传递给模态视图控制器。

有没有办法让模态视图控制器本身知道它正在使用哪种样式,并在它发生变化时发出警报,以便它可以响应?

至少了解应用程序大小类的一种略显粗略的方法:

UIApplication.shared.delegate?.window??.rootViewController?.traitCollection

最新更新