增加布局约束的优先级

我有一个superView这样的labelbutton

 |--------------[Label]-----[button]-| 

如果可能的话,我希望label centred ,然后在button上留出最小间隔,然后向左移动。

所以如果button很大,它看起来像…

 |-[ LABEL! ]-[button]-| 

所以,button保持在原来的位置和相同的大小。 元素之间有最小的差距。

我可以添加centerX约束,但我似乎无法给它一个优先级,所以它仍然是Required

我怎样才能创造这种情况? 我正在做代码中的所有自动布局。

我目前的限制是…

 [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[_label]-(>=8@1000)-[_button(==45)]-|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]]; [self addConstraint:[NSLayoutConstraint constraintWithItem:_label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; 

但是我不确定如何减less第二个约束的优先级。

您只需设置约束的priority属性,如下所示:

 NSLayoutConstraint *centeringConstraint = [NSLayoutConstraint constraintWithItem:_label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]; centeringConstraint.priority = 800; // <-- this line [self addConstraint:centeringConstraint];