2013-07-21 21 views

cevap

1

çizgisinde bir şey Bu viewA aynı anda en az viewB ve viewC kadar geniş, sonra iki ayrı VFL deyimi, @"H:[viewA(>=viewB)]" ve @"H:[viewA(>=viewC)]" kullanın. Ayrıca bir viewB ve/veya viewC maksimum genişliğinden daha geniş olmayacak sağlamak için

, bir tanesinde eşit olacak şekilde viewA genişliği için (UILayoutPriorityRequired yani daha düşük bir öncelik), isteğe bağlı bir kısıtlama tanımlamak bunlardan, örneğin:

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:viewA 
                   attribute:NSLayoutAttributeWidth 
                   relatedBy:NSLayoutRelationEqual 
                   toItem:viewB 
                   attribute:NSLayoutAttributeWidth 
                  multiplier:1.0 
                   constant:0.0]; 
constraint.priority = UILayoutPriorityDefaultLow; 
[viewA.superview addConstraint:constraint]; 

priority belgelerine göre: bir kısıtlama 'a == b' isteğe bağlıysa

, kısıt tabanlı düzen sistemi 'en aza indirmek için çalışacaktır abs (a-b)'. viewBviewC büyükse

Böylece, bu isteğe kısıt memnun olacak, ve viewAviewB kadar geniş olacaktır. viewB, viewC'dan daha küçükse, kısıtlama sistemi gereken @"H:[viewA(>=viewC)]" kısıtını karşılar, ancak abs(a-b) değerini en aza indirir ve 'u viewC ile aynı genişlikte yapar.

Uygulamada, muhtemelen bu isteğe viewA==viewB kısıtlamayı gerekmez, ancak viewAviewB ve viewC hem daha geniş olmayacak sağlamak istiyorsanız, o zaman bu son isteğe bağlı kısıtlamayı ekleyin.

İlgili konular