16

私はこのようなものを持っていlabelます。buttonsuperView

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

可能であれば、に少しギャップを空けてlabel左に移動したいと思います。centredbutton

したがって、ボタンが大きい場合は、次のようになります...

|-[        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番目の制約の優先度を下げる方法がわかりません。

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 に答える