Ios 如何从嵌套子视图控制器中检查屏幕的当前大小类?

Ios 如何从嵌套子视图控制器中检查屏幕的当前大小类?,ios,uiviewcontroller,uikit,size-classes,uitraitcollection,Ios,Uiviewcontroller,Uikit,Size Classes,Uitraitcollection,我的应用程序中有一个带有多个子视图控制器的屏幕。在较小的屏幕尺寸(如iPhone)上,视图控制器彼此对齐。在iPad的屏幕尺寸上,一个视图控制器浮在另一个的上面 我想让我的视图控制器在浮动时只有一个角半径。因此,我研究了在我的子视图控制器中重写一个方法,如viewDidLoad或overrideTraitCollection(forChildViewController:),以根据其大小类是wRegular还是hRegular设置其视图的角半径,这是纵向还是横向的iPad 但是,子视图控制器似乎

我的应用程序中有一个带有多个子视图控制器的屏幕。在较小的屏幕尺寸(如iPhone)上,视图控制器彼此对齐。在iPad的屏幕尺寸上,一个视图控制器浮在另一个的上面

我想让我的视图控制器在浮动时只有一个角半径。因此,我研究了在我的子视图控制器中重写一个方法,如
viewDidLoad
overrideTraitCollection(forChildViewController:)
,以根据其大小类是wRegular还是hRegular设置其视图的角半径,这是纵向还是横向的iPad

但是,子视图控制器似乎没有设置与根视图控制器相同的大小类值,沿着
parentViewController
层次结构向上移动似乎无法找到具有这些值的视图控制器


如何从子视图控制器访问视图层次顶部的当前大小类

编辑: 我用UIScreen尝试了现有的答案,当我的应用程序是唯一可见的应用程序时,效果非常好。但是,当应用程序在分屏模式下运行时,它会导致不正确的行为——即使应用程序很窄,它也总是返回Regular/Regular。是否有一种解决方案涉及仅获取我的应用程序所在屏幕部分的大小级别?

如下(这是当前的Swift 3):

现在,您可以像这样询问
tc

的垂直和水平尺寸等级(这是当前的Swift 3):


现在,您可以询问
tc

的垂直和水平大小类“我应该如何从子视图控制器访问视图层次结构顶部的当前大小类?”询问屏幕其大小类。就是这样。谢谢下面是一个可下载的示例项目,它向您展示了如何更改孩子的特质环境。该示例与您描述的完全相同:当trait集合不同时(在故事板中配置)“我应该如何从子视图控制器访问视图层次结构顶部的当前大小类?”询问屏幕其大小类是什么。就是这样。谢谢下面是一个可下载的示例项目,它向您展示了如何更改孩子的特质环境。该示例与您描述的完全相同:当特征集合不同(在故事板中配置)时,孩子的行为会有所不同,尽管这是一个选项,但如果您支持iPad的多任务处理,则不建议这样做。@user3049050因此屏幕不会给出此应用程序的正确答案,当我们在iPad下进行多任务处理时?是的——UIScreen的traitCollection返回常规的,甚至在多任务中调整大小。建议改为从视图控制器获取一个。@tzuer在这种情况下,我建议使用窗口。您无法在视图层次结构中获得更高的级别,并且始终存在一个窗口。虽然这是一个选项,但如果您支持iPad的多任务,则不建议使用该选项。@user3049050,因此屏幕不会给出此应用程序的正确答案,当我们在iPad下进行多任务处理时?是的——UIScreen的traitCollection返回常规的,甚至在多任务中调整大小。建议改为从视图控制器获取一个。@tzuer在这种情况下,我建议使用窗口。在视图层次结构中,您再也无法获得更高的层次,而且始终存在一个窗口。
let tc = UIScreen.main.traitCollection