0

Je suis en train de convertir une contrainte relationnelle au format visuel. La sous-vue est de largeur égale & hauteur à la super vue.NSLayoutRelationConstraint au format Visual contrainte

Voici mon code:

[parentView addConstraint:[NSLayoutConstraint 
     constraintWithItem:childView 
       attribute:NSLayoutAttributeHeight 
       relatedBy:NSLayoutRelationEqual 
        toItem:parentView 
       attribute:NSLayoutAttributeHeight 
       multiplier:1.0 
       constant:0]]; 

[parentView addConstraint:[NSLayoutConstraint 
     constraintWithItem:childView 
       attribute:NSLayoutAttributeWidth 
       relatedBy:NSLayoutRelationEqual 
        toItem:parentView 
       attribute:NSLayoutAttributeWidth 
       multiplier:1.0 
       constant:0]]; 

Comment pourrais-je convertir en un format visuel?

+0

Indice '@" H: | [enfantView] | "', '@" V: | [enfantView] | "' – Antonis

Répondre

2

Vous pouvez le faire en utilisant deux chaînes de format visuel, l'une horizontale, verticale:

NSDictionary* views = NSDictionaryOfVariableBindings(parentView, childView); 
NSArray* horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[childView(==parentView)]" options:0 metrics:nil views:views]; 
NSArray* vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[childView(==parentView)]" options:0 metrics:nil views:views]; 

Cela, à proprement parler, correspond aux contraintes que vous avez montrées. Cela fait que l'enfant a la même taille que le parent, mais ne dicte pas la position de l'enfant dans le parent.

Comme Antonis l'a suggéré dans les commentaires, vous pouvez aborder cette question différemment. Vous pouvez utiliser H:|[childView]| et V:|[childView]| pour que les bords de l'enfant correspondent aux bords du parent. Cela dicte non seulement la taille, quoique indirectement, mais aussi la position.

0

Je recommanderais d'ajouter une contrainte à stroyboard, de créer une sortie dans le contrôleur de vue et de mettre à jour la constante si nécessaire.

Il sera facile à gérer et modifier de façon dynamique en fonction des différentes tailles d'écran (4, 5 s, 6, 6 Plus, etc.)

+0

La question demande comment faire cela par format visuel ne demandant pas s'il a une meilleure façon de faire ce genre de choses. –