, A, B ve C Etiket bir hangisi, B ya da CBir görünüm, en geniş iki görünümden geniş olacak şekilde nasıl bir kısıtlama eklerim? Örneğin
daha geniş olan bir genişliğe sahip olmalıdır etiketlergörsel, emin için
@"H:[viewA(==MAX(viewB,viewC))]"
, A, B ve C Etiket bir hangisi, B ya da CBir görünüm, en geniş iki görünümden geniş olacak şekilde nasıl bir kısıtlama eklerim? Örneğin
daha geniş olan bir genişliğe sahip olmalıdır etiketlergörsel, emin için
@"H:[viewA(==MAX(viewB,viewC))]"
ç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)'.
viewB
viewC
büyükse
Böylece, bu isteğe kısıt memnun olacak, ve viewA
viewB
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 viewA
viewB
ve viewC
hem daha geniş olmayacak sağlamak istiyorsanız, o zaman bu son isteğe bağlı kısıtlamayı ekleyin.
olası yinelenmesi [Autolayout height, MAX (çoklu görünüm yükseklikleri)] (http://stackoverflow.com/questions/17117799/autolayout-height-equal-to-maxmultiple-view-heights) –