Ce que j'aimerais faire, c'est faire glisser un composant/vue d'une vue d'ensemble à l'autre dans le générateur d'interface de Xcode sans que son cadre/position soit réinitialisé.
Le comportement par défaut de Xcode lors de cette opération semble être de centrer la vue déplacée verticalement et horizontalement dans sa nouvelle vue d'ensemble, tout en préservant ses dimensions. C'est extrêmement frustrant, car cela signifie que la vue doit être repositionnée manuellement dans sa nouvelle vue d'ensemble. Mais je l'avais positionné correctement avant de le déplacer, donc j'aimerais que Xcode se souvienne juste de tous les attributs de son cadre au lieu de seulement sa largeur/hauteur. Est-ce possible?
Une autre solution:
J'ai trouvé quelque chose qui pourrait vous aider les gars!
La tâche consiste à regrouper les "vues enfant" en "vue parent" afin qu'elles deviennent des enfants de la vue parent hiérarchiquement et conservent les positions physiques affichées comme avant l'action.
Tout d'abord, ajustez la vue parent pour couvrir physiquement la zone des vues enfant. Deuxièmement, assurez-vous que tous les enfants sont en dessous dans la liste des vues.
Maintenant, sélectionnez tous les enfants avec la souris et déplacez-les, par exemple un pixel vers le haut et un pixel vers le bas (juste pour dire IB il y a un changement). Après cela, libérez les enfants et ils deviendront magiquement les enfants du parent et garderont leurs positions affichées.
Cela fonctionne pour moi sur OSX 10.8.2 et Xcode 4.6.
Bonne chance!
J'ai réussi à économiser beaucoup de temps passé à repositionner des trucs et j'ai fait ceci:
Pas très élégant cependant, je ne vois pas pourquoi XCode ne le prend pas en charge avec Shift ou quelque chose.
Sélectionnez tous les contrôles que vous souhaitez déplacer d'un UIView à un autre UiView (peut-être enfant) ou ScrollView
Couper/Copier
Maintenant, après avoir fait glisser le nouveau UIView/ScrollView vers votre UIView existant, ne cliquez pas une fois pour le sélectionner, mais DOUBLE cliquez sur le nouveau UIView/ScrollView et collez tous les contrôles.
La différence de distance restera la même entre tous les contrôles, mais vous devrez peut-être repositionner les contrôles à nouveau. Donc, ne cliquez nulle part avant d'avoir repositionné ceux-ci, repositionnez simplement tous les contrôles par des flèches de navigation car ils sont déjà tous sélectionnés, ou vous pouvez les sélectionner à nouveau.
REMARQUE: je suis sur XCode 4.2
J'ai fait quelque chose de similaire à la solution de Stepan, sans utiliser de storyboard. Dans l'IB pendant que la vue du ViewController est ouverte:
Q:
L'incorporation d'une vue (qui contient de nombreuses autres sous-vues) dans un ScrollView ou dans une autre vue de niveau supérieur n'est pas simple avec ce que j'ai vu jusqu'à présent. Ce qui se passe peu de temps après, c'est que toutes les sous-vues peuvent sembler déplacées car elles ne trouvent pas leur cadre d'origine.
A:
Suivez les étapes suivantes et vous pourrez le résoudre le plus facilement possible:
Non, pas encore terminé! Parfois, vous pouvez rencontrer qu'il y a quelques autres problèmes liés à la contrainte d'interface utilisateur, vous devrez les résoudre en conséquence.
Il s'agit de la meilleure solution pour copier des sous-vues dans une autre vue et conserver les positions:
L'étape 6 supprimerait la vue d'intégration et vous n'aurez copié que les sous-vues.
J'ai détecté une autre approche. C'est essentiellement: Déplacer = Couper + Coller
De cette façon, vous faites:
De cette façon, vous ne le faites pas:
La base de la chose est que chaque vue sauf une (racine) dans Storyboard a sa vue parent. Ensuite, lorsque vous copiez/déplacez plusieurs sous-vues, vous perdez les cadres et les contraintes.
La réponse est plutôt simple. Vous faites une copie de vos sous-vues (SV) en copiant leur vue parent (P) dans une nouvelle vue parent (P '). De cette façon, vous devrez peut-être recréer uniquement les contraintes de cette nouvelle vue parent (P ') vers sa nouvelle vue parent, mais pas pour chaque sous-vue que vous souhaitez déplacer.
Après avoir fait une copie de la vue parent (P) dans une nouvelle (P '), à partir de cette nouvelle vue (P') vous:
Et à partir de la vue parent d'origine (P), vous:
Avant:
Vue1
Vue2
P
SV-vous-voulez-déplacer
SV-vous-ne-voulez-pas-bouger
Vue3
Après:
Vue1
Vue2
P
SVs-vous-ne-voulez-pas-bouger
Vue3
P '
Les SV que vous voulez déplacer
Je dois souligner que cela ne se généralise pas bien si vous avez par exemple UIScrollView en tant que vue parent. Ensuite, une copie 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 parent d'origine (P), vous devrez peut-être recréer certaines contraintes si d'autres (sous-vues non mobiles) les référencent. Mais vous devriez quand même le faire.