我应该使用UITraitCollection类来更新Size Class约束吗?这是更新约束的最佳实践吗?
我已经浏览了UITraitCollection,但不知道如何区分肖像和风景?
答案 0 :(得分:1)
听起来你想要一个基于iPad方向的不同布局。
如果您需要调整约束值,则可以查看UITraitCollection
的{{1}}和horizontalSizeClass
属性。可以在UIUserInterfaceSizeClass
的Apple文档中找到大小类属性值。我无法保证这是最好的做法,但我没有看到任何错误。检查verticalSizeClass
的另一种方法是检查UITraitCollection
,如下面的代码段所示。
更复杂的场景需要对横向与纵向使用完全不同的约束。您可以通过编程方式添加这些约束,或者可以使用不同的大小类来添加约束,然后为基于方向的每个大小类的约束创建UIInterfaceOrientationIsPortrait
。
例如,我使用wAnyhRegular设置我的纵向iPad布局,然后使用wRegularhAny设置我的横向iPad布局。 (虽然您可能希望使用wRegular / hRegular作为您的方向布局之一,因为当您检查IBOutletCollection
时iPad会注册为wRegular / hRegular。希望下面的代码演示了我如何去做:
UITraitCollection
我的肖像限制可以在下面看到。我的风景也有3个限制。
然后我按照下面的说明应用约束(未显示,viewDidLoad执行@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *iPadPortraitConstraints;
@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *iPadLandscapeConstraints;
):
_needsiPadConstraintsApplied = YES;
最后,您可能会发现此exploration of size classes有用。