Hiện tại, không, có vẻ như không thể tập trung một chế độ xem trong giám sát chỉ bằng cách sử dụng VFL. Tuy nhiên, không khó để thực hiện điều đó bằng cách sử dụng một chuỗi VFL và một ràng buộc bổ sung duy nhất (trên mỗi trục):
VFL: "|-(>=20)-[view]-(>=20)-|"
[NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:view.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.f constant:0.f];
Mọi người sẽ nghĩ rằng bạn chỉ đơn giản là có thể làm điều này (đó là những gì tôi nghĩ ban đầu và đã thử khi tôi thấy câu hỏi này):
[NSLayoutConstraint constraintsWithVisualFormat:@"|-(>=20)-[view(==200)]-(>=20)-|"
options: NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY
metrics:nil
views:@{@"view" : view}];
Tôi đã thử nhiều biến thể khác nhau ở trên để cố gắng uốn cong nó theo ý muốn của tôi, nhưng điều này dường như không áp dụng cho giám sát ngay cả khi rõ ràng có hai chuỗi VFL riêng biệt cho cả hai trục ( H:|V:
). Sau đó tôi bắt đầu cố gắng và cô lập chính xác khi lựa chọn làm được áp dụng cho các VFL. Chúng dường như không áp dụng cho giám sát trong VFL và sẽ chỉ áp dụng cho bất kỳ chế độ xem rõ ràng nào được đề cập trong chuỗi VFL (gây thất vọng trong một số trường hợp nhất định).
Tôi hy vọng trong tương lai Apple sẽ bổ sung một số loại tùy chọn mới để có các tùy chọn VFL có tính đến giám sát, ngay cả khi chỉ thực hiện khi chỉ có một chế độ xem rõ ràng bên cạnh giám sát trong VFL. Một giải pháp khác có thể là một tùy chọn khác được đưa vào VFL có nội dung như sau : NSLayoutFormatOptionIncludeSuperview
.
Không cần phải nói, tôi đã học được rất nhiều về VFL khi cố gắng trả lời câu hỏi này.