用于更新大小类的UITraitCollection类

时间:2015-04-15 12:32:46

标签: ios ipad storyboard size-classes uitraitcollection

我应该使用UITraitCollection类来更新Size Class约束吗?这是更新约束的最佳实践吗?

我已经浏览了UITraitCollection,但不知道如何区分肖像和风景?

1 个答案:

答案 0 :(得分:1)

听起来你想要一个基于iPad方向的不同布局。 如果您需要调整约束值,则可以查看UITraitCollection的{​​{1}}和horizontalSizeClass属性。可以在UIUserInterfaceSizeClass的Apple文档中找到大小类属性值。我无法保证这是最好的做法,但我没有看到任何错误。检查verticalSizeClass的另一种方法是检查UITraitCollection,如下面的代码段所示。

更复杂的场景需要对横向与纵向使用完全不同的约束。您可以通过编程方式添加这些约束,或者可以使用不同的大小类来添加约束,然后为基于方向的每个大小类的约束创建UIInterfaceOrientationIsPortrait

例如,我使用wAnyhRegular设置我的纵向iPad布局,然后使用wRegularhAny设置我的横向iPad布局。 (虽然您可能希望使用wRegular / hRegular作为您的方向布局之一,因为当您检查IBOutletCollection时iPad会注册为wRegular / hRegular。希望下面的代码演示了我如何去做:

UITraitCollection

我的肖像限制可以在下面看到。我的风景也有3个限制。 Portrait Constraints

然后我按照下面的说明应用约束(未显示,viewDidLoad执行@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *iPadPortraitConstraints; @property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *iPadLandscapeConstraints; ):

_needsiPadConstraintsApplied = YES;

最后,您可能会发现此exploration of size classes有用。