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

时间:2016-08-25 04:03:23

标签: ios uiviewcontroller uikit size-classes uitraitcollection

我的应用中有一个带有多个子视图控制器的屏幕。在像iPhone这样的较小屏幕尺寸上,视图控制器彼此齐平放置。在iPad屏幕尺寸上,其中一个视图控制器浮在另一个上面。

我想让它成为我的视图控制器,有时浮动只有浮动时的角半径。因此,我已经考虑在我的子视图控制器中覆盖像viewDidLoadoverrideTraitCollection(forChildViewController:)这样的方法,根据其大小类是否为wRegular,hRegular来设置视图的角半径,这适用于iPad在肖像或风景中。

但是,子视图控制器似乎没有设置与根视图控制器相同的大小类值,并且沿parentViewController层次结构向上移动似乎没有让我看到一个视图控制器有这些价值观。

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

修改 我已经使用UIScreen尝试了现有的答案,当我的应用程序是唯一可见的应用程序时它很有用。但是,当应用程序以分屏模式运行时,它会导致错误的行为 - 即使应用程序很窄,它也会返回常规/常规。是否有一个解决方案涉及获取我的应用程序所在屏幕部分的大小等级?

1 个答案:

答案 0 :(得分:1)

像这样(这是当前的Swift 3):

let tc = UIScreen.main.traitCollection

现在,您可以查询tc的垂直和水平尺寸类。