2013-03-12 11 views
16

Böyle bir superView içinde bir label ve button var.Düzen kısıtlamalarına öncelik ekleme

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

Ben, o zaman button bir dk boşluğu var ve sola hareket mümkünse labelcentred olmak istiyorum. düğme büyükse Yani benziyor

...

|-[  LABEL!  ]-[button]-| 

Yani, ve aynı boyutta düğme kalır. Ve elemanlar arasında minimum boşluklar var.

centerX kısıtlamasını ekleyebilirim, ancak bir öncelik veremiyorum, bu nedenle Required kalır.

Bu durumu nasıl oluşturabilirim? Koddaki tüm otomatik düzeni yapıyorum.

Ben şu anda var kısıtları ...

[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]]; 

Ama ikinci kısıtlama önceliğini azaltmak için nasıl emin değilim.

cevap

35

Sadece çok gibi kısıtlaması priority özelliğini ayarlayın: Elbette

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

! Teşekkürler! Nesneyi eklemeden önce oluşturmayı düşünmedim. Mükemmel! Şimdi sıraladım, teşekkürler! – Fogmeister

İlgili konular