UITraitCollection澄清

时间:2014-06-20 15:43:26

标签: ios swift size-classes

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

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

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

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

所以我的问题是,我是否需要为每个设备方向指定我想要的大小类(据我所知,大小类是只读属性!)或者我错过了一些明显的东西? 在Cocoa-Touch&#39;中的新功能中给出的示例中。在WWDC 2014视频网站上,他以iPhone为例,每个设备都有不同的垂直/水平尺寸等级。

你会怎么做?

1 个答案:

答案 0 :(得分:7)

This document(滚动到 Universal Storyboards for Universal Apps )解释了iPad和iPhone的尺寸等级。

请注意,iPhone有点棘手。所有iPad在任何方向都是Regular-x-Regular,但iPhone的尺寸等级会改变方向,从Portrait中的Regular(h)-x-Compact(w)到Landscape中的Compact-x-Compact。

所有这些变化的谣言说明苹果可能会很快推出更多的屏幕分辨率,目前的数字已经需要一堆if-then而没有这些尺寸等级。为了简化这种转变,我建议您考虑更像响应式网页设计的内容,在这里您可以定义一些通用布局,然后在其中一个布局中以任何精确的尺寸拉伸内容。

编辑:

1)如果链接中断,请找到“iOS中的新功能”Apple Doc,转到iOS8部分,查找“支持新的屏幕大小和缩放”

2)iPhone 6+在横向模式下具有常规宽度。