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 实例。