16

我有一个这样label的。buttonsuperView

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

如果可能的话,我希望labelcentred一个最小的间隙,然后button向左移动。

所以如果按钮很大,它看起来像......

|-[        LABEL!        ]-[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]];

但我不确定如何降低第二个约束的优先级。

4

1 回答 1

36

您只需设置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];
于 2013-03-12T15:33:11.093 回答