Добавление приоритета к ограничениям макета
У меня есть 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];