我会很简短,很清楚。我想使用约束来执行下图中的操作。有什么建议或解决方案吗?
说明:
有颜色的地方是 UIViews,包含 for ex。4 个标签。那么我应该使用什么约束来操作第二个 UIView 以便在纵向模式下位于第一个并且在横向模式下位于它旁边?
我会很简短,很清楚。我想使用约束来执行下图中的操作。有什么建议或解决方案吗?
说明:
有颜色的地方是 UIViews,包含 for ex。4 个标签。那么我应该使用什么约束来操作第二个 UIView 以便在纵向模式下位于第一个并且在横向模式下位于它旁边?
下面的代码假定您已经在代码中引用了橙色视图和黄色视图。在纵向模式下,您希望它们按顺序排列,这样您就可以拥有这样的布局
NSLayoutConstraint *portraitConstraint = [NSLayoutConstraint
constraintWithItem:orangeView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:yellowView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:2.0f];
[self.view addConstraint:portraitConstraint];
在横向模式下,您可以有这样的布局约束
NSLayoutConstraint *landscapeConstraint = [NSLayoutConstraint
constraintWithItem:orangeView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:yellowView
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:2.0f];
[self.view addConstraint:landscapeConstraint];
现在这些不是您需要的约束的完整列表,如果您在代码中构建并且只有代码您必须让橙色视图贴在顶部,视图的前导和尾随,然后在代码中有黄色视图坚持纵向视图中的前导、尾随和底部。
在横向中,橙色视图会粘在顶部、底部和前导,而黄色视图会粘在顶部、底部和尾随。
上面的约束允许你不需要设置高度,但你可能还想说橙色视图底部是 centerY - 1.0 纵向和 centerX - 1.0f 横向,从而避免需要宽度和高度,因此不必担心屏幕的大小。中心 X 和 Y 在下方
NSLayoutConstraint *centerX = [NSLayoutConstraint
constraintWithItem:orangeView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0f
constant:-1.0f];
[self.view addConstraint:centerX];
NSLayoutConstraint *centerY = [NSLayoutConstraint
constraintWithItem:orangeView
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:-1.0f];
[self.view addConstraint:centerY];
上述限制应该可以帮助您解决问题。