Contrainte Layout avec un Container

J'ai fait un truc que je trouve pas très propre avec les contraintes layout ; je suis sûr qu'il y a dans le coin des avis éclairés sur la question.


 


Par souci du respect du principe de responsabilité unique, j'ai une scène de storyboard dans laquelle j'ai placé plusieurs Container View.


Je souhaite que la largeur de chaque Container soit la largeur de leur super-vue. Pour l'instant c'est facile, deux contraintes leading space et training space et le tour est joué.


Pareil pour positionner les différents containers les uns en dessous des autres, top leading, bottom leading et basta.


 


Mon problème c'est pour la hauteur de mes containers. La hauteur de chacun des containers est fixe et déterminée par le contenu de la vue associé au contrôleur inclus.


 


Dans les vues incluses, les top leading, hauteurs et vertical space sont tous fixes. J'aimerais pouvoir mettre une contrainte, ou n'importe quoi en fait, qui permette au container de calculer sa hauteur en fonction de son contenu.


En jouant avec les contraintes je n'y arrive pas si le laisse une hauteur libre du container, IB m'engueule car il manque une contrainte.


Pour éviter de trop me faire engueuler, j'ai créé une contrainte de hauteur sur mon container. ça marche nickel (on dirait en tout cas) mais je n'aime pas pour deux raisons :


- si je modifie le contenu de ma vue enfant il faudra que je pense à  modifier la hauteur du container


- je me prends une bordée d'injures à  l'exécution, il y a trop de contraintes et le bazar en enlève une au hasard.


 


Je pense qu'il me manque quelque chose dans la compréhension de l'autolayout ...


Réponses

  • Je ne pense pas que ce soit un problème exceptée la deuxième raison. Si j'ai bien compris, mettre une contrainte de hauteur me paraà®t justifiée si tu connais sa taille. Tu peux toujours mettre une contrainte de hauteur supérieure ou égal si le contenu peut évoluer (mais ne marche pas si le contenu s'affaiblit, et là  faut faire l'inverse) mais sinon je vois pas dans le Storyboard ce qui peut te permettre de définir une contrainte dynamique qui s'ajustera au contenu.


  • Je me suis souvent confronté à  ce genre de problème avec autolayout, j'ai fini par me résigner à  utiliser du code pour ce genre de cas un peu dynamique.

    Dans ton cas, tu peux fixer des contraintes à  tes containers que tu pourras modifier en fonction du contenu par le code.
  • Je crois effectivement qu'il va falloir que je cherche de ce côté.


Connectez-vous ou Inscrivez-vous pour répondre.