我试图弄清楚如何以编程方式使用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为例,每个设备都有不同的垂直/水平尺寸等级。
你会怎么做?
答案 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+在横向模式下具有常规宽度。