Actuellement, non, il ne regarde pas comme il est possible pour centre un point de vue dans le superview en utilisant seulement le VFL. Il est, cependant, pas si difficile de le faire en utilisant un seul VFL chaîne et une seule contrainte supplémentaire (par axe):
VFL: "|-(>=20)-[view]-(>=20)-|"
[NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:view.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.f constant:0.f];
On pourrait croire que vous devez simplement être en mesure de le faire (c'est ce que j'ai d'abord pensé et essayé quand j'ai vu cette question):
[NSLayoutConstraint constraintsWithVisualFormat:@"|-(>=20)-[view(==200)]-(>=20)-|"
options: NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY
metrics:nil
views:@{@"view" : view}];
J'ai essayé beaucoup de différentes variations de ce qui précède essayer de la plier à ma volonté, mais cela ne semble pas s'appliquer à la superview, même lorsqu'il est explicitement avoir deux VFL chaînes pour les deux axes (H:|V:
). J'ai alors commencé à essayer de l'isoler exactement quand les options ne appliquée pour le VFL. Ils semblent ne pas s'appliquer à la superview dans le VFL et ne s'appliquent à toute explicite des points de vue qui sont mentionnés dans le VFL chaîne (qui est décevant dans certains cas).
J'espère que dans le futur Apple ajoute une sorte de nouvelle option pour avoir le VFL options de tenir compte de la superview, même si le faire seulement quand il y a une seule explicite d'ailleurs le superview dans le VFL. Une autre solution pourrait être une autre option est passé dans le VFL qui dit quelque chose comme: NSLayoutFormatOptionIncludeSuperview
.
Inutile de dire que j'ai beaucoup appris sur le VFL essayer de répondre à cette question.