2013-03-12 73 views
16

我有一個labelbutton在這樣一個superView增加布局約束的優先級

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

我想要labelcentred如果可能的話,那麼有差距最小的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]]; 

但我不知道如何降低第二約束的優先級。

回答

35

你剛纔設置的約束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]; 
+0

當然!謝謝!我沒想過在添加它之前創建對象。完善!現在排序,謝謝! – Fogmeister 2013-03-12 15:35:41