iOS 7 的 UITraitCollections
目标是让其中的一些有用 UITraitCollection
API 在 iOS 7 中可用,以便在编写布局代码时减少分支路径。
目前以下 API 应该对 iOS 7 可用:
-traitCollection
- 当前 UITraitCollection
的 UIView
或 UIViewController
,iOS 7 上将返回一个 DDTraitCollection
实例(它应该与 UITraitCollection
兼容 API)-traitCollectionDidChange:
- 此方法将在任何之前调用过 -dd_registerForTraitCollectionUpdates
的 iOS 7 view
或 viewController
上被调用首先,您应该在需要访问 traitCollection
的任何文件中导入 #import <DDTraitCollection/UIView[Controller]+DDTraitCollection.h>
如果要在代码中创建 UITraitCollection
(或 DDTraitCollection
)实例,应导入
以下如何使用此功能的快速示例
- (void)updateConstraints {
UITraitCollection *currentTraitCollection = self.traitCollection;
if(currentTraitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) {
// Update constraints for compact horizontal size class
...
} else {
// Do stuff for regular
...
}
[super updateConstraints];
}
如果您需要在 iOS 7 和 8 之间共享的代码中创建 UITraitCollection
实例,应通过 DDTraitCollection
类方法实现(在 iOS 7 中使用 UITraitCollection
将只会使某些内容变为 nil)。
在 iOS 7 中,它将返回一个 DDTraitCollection
实例,而在 iOS 8 中,它将正确地返回 UITraitCollection
实例。