Добавление приоритета к ограничениям макета

У меня есть label и button в superView, как это.

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

Я хотел бы, чтобы label был centred, если это возможно, затем введите минимальный пробел в button и переместитесь влево.

Итак, если кнопка большая, она выглядит как...

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

Итак, кнопка остается там, где она, и имеет тот же размер. И между элементами есть минимальные промежутки.

Я могу добавить ограничение centerX, но я не могу назвать его приоритетом, поэтому он остается Required.

Как я могу создать эту ситуацию? Я делаю все автоматическое расположение в коде.

Ограничения, которые я имею в настоящее время,...

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[_label]-(>[email protected])-[_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]];

Но я не уверен, как уменьшить приоритет второго ограничения.

Ответ 1

Вы просто устанавливаете свойство 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];