このような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]];
しかし、2番目の制約の優先度を下げる方法がわかりません。
次のように、制約の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];