Ví dụ, nhãn A, B và C. Label Một nên có chiều rộng của bất cứ rộng, B hoặc C.Làm cách nào để thêm một ràng buộc sao cho chế độ xem rộng bằng hai chế độ xem khác?
Nhìn bề ngoài, một cái gì đó dọc theo dòng của
@"H:[viewA(==MAX(viewB,viewC))]"
Ví dụ, nhãn A, B và C. Label Một nên có chiều rộng của bất cứ rộng, B hoặc C.Làm cách nào để thêm một ràng buộc sao cho chế độ xem rộng bằng hai chế độ xem khác?
Nhìn bề ngoài, một cái gì đó dọc theo dòng của
@"H:[viewA(==MAX(viewB,viewC))]"
Nếu bạn muốn đảm bảo rằng viewA
đồng thời ít nhất là rộng như cả viewB
và viewC
, sau đó sử dụng hai câu lệnh VFL riêng biệt, @"H:[viewA(>=viewB)]"
và @"H:[viewA(>=viewC)]"
.
Nếu bạn cũng muốn đảm bảo rằng A sẽ không được rộng hơn so với chiều rộng tối đa của viewB
và/hoặc viewC
, bạn sẽ xác định một hạn chế không bắt buộc (tức là ưu tiên thấp hơn UILayoutPriorityRequired
) cho chiều rộng của viewA
là tương đương với một trong số họ, ví dụ:
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];
Theo tài liệu cho priority
:
Nếu một hạn chế 'a == b' là tùy chọn, hệ thống bố trí hạn chế dựa trên sẽ cố gắng hạn chế tối đa ' abs (a-b) '.
Vì vậy, nếu viewB
lớn hơn viewC
, hạn chế tùy chọn này sẽ được hài lòng và viewA
sẽ rộng như viewB
. Nếu viewB
nhỏ hơn viewC
, hệ thống ràng buộc sẽ đáp ứng yêu cầu @"H:[viewA(>=viewC)]"
ràng buộc, nhưng sau đó cũng sẽ giảm thiểu abs(a-b)
, có hiệu quả làm cho viewA
cùng chiều rộng như viewC
.
Trong thực tế, có thể bạn không cần bắt buộc viewA==viewB
ràng buộc này, nhưng nếu bạn muốn đảm bảo rằng viewA
sẽ không được rộng hơn cả viewB
và viewC
, sau đó thêm hạn chế tùy chọn cuối cùng này.
bản sao có thể có của [Độ cao tự động bằng MAX (chiều cao nhiều lượt xem)] (http://stackoverflow.com/questions/17117799/autolayout-height-equal-to-maxmultiple-view-heights) –