5

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

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

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

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

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

你会怎么做?

4

1 回答 1

7

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

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

传闻对所有这些变化的解释是,Apple 可能很快就会引入更多的屏幕分辨率,而目前的数字已经需要一堆没有这些尺寸等级的 if-then。为了简化这种过渡,我建议您考虑更像响应式网页设计之类的事情,您可以在其中定义一些通用布局,然后在其中一个布局中拉伸以适应任何精确尺寸。

编辑:

1) 如果链接中断,请找到“iOS 中的新功能”Apple Doc,转到 iOS8 部分,然后查找“支持新的屏幕尺寸和比例”

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

于 2014-06-20T17:14:27.623 回答