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

question:

  • 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)?

code - donné ci-dessous est ma tentative, mais elle ne fournit pas la sortie souhaitée.- Aucune erreur nette.V1 est placé correctement mais v2 est l'un des angles gauche de V1

Note - J'ai expliqué ci-dessous dans les commentaires, ce que j'essaie de faire.

[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];

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top