UITraitCollection澄清

我试图找出如何以编程方式使用UITraitCollection ,但我觉得很难理解它。 我正在iOS 8中开发iPad视网膜。

println(self.traitCollection)返回以下输出:

  <UITraitCollection: 0x10df4c7f0; _UITraitNameUserInterfaceIdiom = Pad, _UITraitNameDisplayScale = 2.000000, _UITraitNameHorizontalSizeClass = Regular, _UITraitNameVerticalSizeClass = Regular, _UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1> 

这是非常简单的。 但是当我旋转屏幕,我得到完全相同的输出。 即,相同的垂直尺寸等级和相同的水平尺寸等级。

所以我的问题是,是否需要为每个设备方向指定我想要的大小类(据我所知,大小类是只读属性!)还是我错过了明显的东西? 在WWDC 2014video网站“Cocoa-Touch新增内容”中给出的例子中,他以iPhone为例,每种设备方向都有不同的垂直/水平尺寸等级。

你会怎么做呢?

本文档 (滚动到统一的通用应用程序故事板 )解释了iPad和iPhone的尺寸等级。

请注意,iPhone是有点棘手。 所有iPad都是Regular-x-Regular任意方向的,但iPhone的尺寸类别从Portrait(h)-x-Compact(w)到Portrait-compact-x-Compact的方向都会改变。

传言中所有这些变化的解释是,苹果公司可能会很快推出更多的屏幕分辨率,而目前的数字已经需要一堆如果没有这些大小的类。 为了缓解这种转变,我build议您考虑更多的东西,比如响应式网页devise,在这里定义一些总体布局,然后在其中一个布局中精确地匹配任何确切的大小。

编辑:

1)如果链接中断,find“iOS的新function”Apple Doc,进入iOS8部分,并查找“支持新的屏幕尺寸和比例”

2)iPhone 6+在横向模式下有一个固定的宽度。