Ios 自动布局约束
我需要一个视图在纵向模式下垂直居中,在横向模式下向右移动(比如150像素) 我试图设置一些限制条件,但似乎无法确定:Ios 自动布局约束,ios,objective-c,autolayout,nslayoutconstraint,Ios,Objective C,Autolayout,Nslayoutconstraint,我需要一个视图在纵向模式下垂直居中,在横向模式下向右移动(比如150像素) 我试图设置一些限制条件,但似乎无法确定: [myImage addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(577@700)-[contentView]-(257@800)-|" options:0
[myImage addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(577@700)-[contentView]-(257@800)-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(contentView)]];
NSLayoutConstraint *myConstraint = [NSLayoutConstraint constraintWithItem:contentView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:myImage
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:-1];
myConstraint.priority = 700;
[myImage addConstraint:myConstraint];
这在横向模式下有效,但在纵向模式下无效。在纵向中,左侧约束(570@700)如果失败,则左侧约束可以成功(257@800)而中心X永远不会实现。我需要第一套(570@700及257@800)使两者都失败,以便可以求助于中心X约束
还是干脆放弃centerX约束?我看到两个选项:
- 添加使
的CenterX=contentView
的CenterX成为一个约束,并保存对该约束的引用。当设备旋转到横向时,将约束的常量设置为150;旋转到纵向时,将常量设置为0myImage
- 当设备旋转时,删除
的水平位置和大小限制,并为设备的方向添加适当的限制contentView
@“H:|-(577)-[contentView]-(257)-|”
约束,但需要一个约束来告诉contentView
其水平大小
如果您想让我详细说明这两个选项,请告诉我。这很有效。我没有考虑保存约束,因为我想尝试在方向更改事件中避免重置约束。只是感觉约束不是这样设计的。您需要同时保存约束和约束中的视图,这会让人感觉乏味,如果需要更改大量约束,可能会很快失去控制。谢谢你的帮助!