Format Visual iOS Autolayout - Alignement
-
12-12-2019 - |
Question
Dans iOS6, j'utilise des autolayouts.
- J'ai 2 vues v1 et v2 créé de manière programmative.
- V2 est ajouté sous forme de sousview à V1
- Les contraintes pour V1 ont déjà été créées de manière programmée (non montrée ici).
- Je veux que V1 et V2 soient de la même taille et que je souhaite que V2 soit placé sur le V1 exactement, le centre horizontal et vertical correspondant à ce que V2 soit exactement sur le V1
- Comment puis-je y parvenir (de préférence en utilisant le format visuel, si ce n'est pas possible, pouvez-vous suggérer une approche alternative)?
[v1 addSubView:v2];
v1.translatesAutoresizingMaskIntoConstraints = NO;
v2.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(v1,
v2);
//I wanted v1 and v2 to be of the same height and wanted the center Y to be aligned together
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[v2(==v1)]"
options:NSLayoutFormatAlignAllCenterY
metrics:nil
views:viewDictionary];
//I wanted v1 and v2 to be of the same height and wanted the center X to be aligned together
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[v2(==v1)]"
options:NSLayoutFormatAlignAllCenterX
metrics:nil
views:viewDictionary];
[v1 addConstraints:horizontalConstraints];
[v1 addConstraints:verticalConstraints];
La solution
ne devrait pas que ce travail?
NSMutableArray *constraints = [NSMutableArray new];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[v2]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(v2)];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(v2)];
[v1 addConstraints:constraints];
Qu'est-ce que cela fait est qu'il fait v2 étirer sa hauteur et sa largeur à la taille de son superview, ce qui est en ce cas de v1 et la positionne la position, ce qui est donc juste sur son superview.
Il semble que dans votre cas, vous n'avez pas besoin d'aligner le point de vue de la vue et de la centrale.Sinon, je ne comprends pas correctement le contexte de votre question.