2013-07-18 5 views
4

Je ne parviens pas à obtenir la disposition souhaitée des vues avec la mise en page automatique dans> iOS6.Contraintes de distance proportionnelles dans la mise en page automatique

J'ai UIView1 et UIView3 qui sont fixés à la vue parent (de manière correspondante avec TopSpaceToSuperview, BottomSpaceToSuperView et FixedHeight) et ils se comportent comme prévu lorsque la vue parent change la hauteur.

Quelles contraintes dois-je spécifier dans l'IB pour l'UIView2 si je veux qu'il maintienne la même distance proportionnelle à ses frères et sœurs (UIView1 et UIView3) lorsque la vue parent change la hauteur? (Tel qu'il apparaît dans l'image)

resizing the parent view

Répondre

8

La façon de le faire est d'utiliser des vues « écarteurs » invisible entre votre point de vue.

Vous ne pouvez pas avoir des espaces relativement grands, utilisez plutôt ces vues.

Lorsque les espaces actuels sont placés un UIView dans chacun. Puis (dans le code comme vous ne pouvez pas le faire dans IB), définissez une contrainte de hauteur entre celles-ci avec le bon multiplicateur que vous voulez.

à savoir

[NSLayoutConstraint constraintWithItem1:spacer2 
           attribute:NSLayoutAttributeHeight 
           relation:NSLayoutRelationEqual 
            item2:spacer1 
           attribute:NSLayoutAttributeHeight 
          multiplier:0.5 
           constant:0]; 

Ensuite, faire les autres vues « collent » au-dessus et en dessous de ces vues d'espacement avec 0 espacement.

Ensuite, il vous suffit de masquer ces vues et la mise en page automatique prendra soin du reste.

+0

Je ne sais pas quand cette fonctionnalité a été ajoutée à xcode mais maintenant vous pouvez définir cette contrainte dans IB. – Sikander

+0

@Sikander il a été ajouté dans Xcode 6 IIRC. – Fogmeister

+0

Eh bien, assurez-vous d'éditer la réponse alors. – Sikander

Questions connexes