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

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

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

Я хотел бы label быть centred если возможно, то имейте мин 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]];

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

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];
Другие вопросы по тегам