J'ai détecté une autre approche. C'est essentiellement: Déplacer = Couper + Coller
De cette façon, vous faites:
- faire en sorte que toutes vos sous-vues soient des enfants de la nouvelle vue parent (P ')
- conserver (presque) toutes vos contraintes dans le storyboard basé sur la mise en page automatique
- conserver les positions relatives (cadres) de votre sous-vue l'une par rapport à l'autre
De cette façon, vous ne:
- modifier le fichier Storyboard dans un éditeur de texte
Le fait est que chaque vue sauf une (racine) dans Storyboard a sa vue parent . Ensuite, lorsque vous copiez / déplacez plusieurs sous-vues, vous perdez des cadres et des contraintes .
La réponse est plutôt simple. Vous faites une copie de vos sous-vues (SV) en copiant leur vue parente (P) dans la nouvelle vue parente (P '). De cette façon, vous devrez peut-être recréer uniquement les contraintes de cette nouvelle vue parente (P ') vers sa nouvelle vue parente, mais pas pour chaque sous-vue que vous souhaitez déplacer.
Après avoir copié la vue parent (P) dans la nouvelle vue (P '), à partir de cette nouvelle vue (P') vous:
- supprimer tous les enfants sauf ceux que vous vouliez déplacer
- recréer de nouvelles contraintes parent (P ')
- recréer d'éventuelles prises Interface Builder vers (SV)
Et à partir de la vue parent d'origine (P) vous:
- supprimer tous les enfants que vous vouliez déplacer
Avant:
Vue1
Vue2
P
SV que vous voulez déménager
SV-vous-ne-voulez-pas-bouger
Vue3
Après:
Vue1
Vue2
P
SV-vous-ne-voulez-pas-bouger
Vue3
P '
SV vous voulez bouger
Je dois souligner que cela ne se généralise pas bien si vous avez par exemple UIScrollView comme vue parent. Ensuite, une copie de celui-ci serait à nouveau un UIScrollView ce qui peut ne pas être souhaitable.
Une autre chose est que lorsque vous supprimez certaines des sous-vues (SV) dans la vue parente d'origine (P), vous devrez peut-être recréer certaines contraintes si d'autres (sous-vues non mobiles) les référencent. Mais tu devrais le faire de toute façon.