Ce que j'aimerais faire, c'est faire glisser un composant / une vue d'une vue à une autre dans le constructeur d'interface de Xcode sans que son cadre / sa position ne 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 de supervision, tout en préservant ses dimensions. Ceci est extrêmement frustrant, car cela signifie que la vue doit être repositionnée manuellement dans sa nouvelle vue de supervision. Mais je l'avais positionné correctement avant de le déplacer, donc j'aimerais que Xcode se souvienne simplement de tous les attributs de son cadre au lieu de seulement sa largeur / hauteur. Est-ce possible?
ios
xcode
interface-builder
aroth
la source
la source
Réponses:
Une autre solution:
la source
J'ai trouvé quelque chose qui pourrait vous aider!
La tâche consiste à regrouper les «vues enfants» en «vue parent» afin qu'elles deviennent les enfants de la vue parent de manière hiérarchique et conservent les positions physiques sur l'affichage comme avant l'action.
Tout d'abord, ajustez la vue parent pour qu'elle couvre physiquement la zone des vues enfants. Ensuite, assurez-vous que tous les enfants sont en dessous dans la liste de vues.
Sélectionnez maintenant 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, relâchez les enfants et ils deviendront comme par magie les enfants du parent et garderont leurs positions exposées.
Cela fonctionne pour moi sur OSX 10.8.2 et Xcode 4.6.
Bonne chance!
la source
J'ai réussi à gagner beaucoup de temps à repositionner des choses 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 comme ça.
la source
Sélectionnez tous les contrôles que vous souhaitez déplacer d'une UIView à une autre UiView (ou ê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 toutes les commandes, mais vous devrez peut-être repositionner les commandes. Donc, ne cliquez nulle part tant que vous ne les avez pas repositionnés, repositionnez simplement tous les contrôles par les flèches de navigation car ils sont tous déjà sélectionnés, ou vous devrez peut-être les sélectionner à nouveau.
REMARQUE: je suis sur XCode 4.2
la source
J'ai fait quelque chose de similaire à la solution de Stepan, sans utiliser de storyboard. Dans l'IB lorsque la vue ViewController est ouverte:
la source
C'est 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.
la source
Xcode Interface Builder gâche lorsqu'une vue parent est glissée et déposée dans une autre vue (UIView, ScrollView, StackView)
Q:
Intégrer une vue (qui contient de nombreuses autres sous-vues) dans une 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 égarées car elles n'ont pas pu trouver leur cadre d'origine.
R:
Suivez les étapes suivantes et vous serez en mesure de le résoudre le plus facilement possible:
Non, pas encore fini! Parfois, vous pouvez rencontrer quelques problèmes liés aux contraintes d'interface utilisateur, vous devrez les résoudre en conséquence.
la source
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 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:
Et à partir de la vue parent d'origine (P) vous:
Avant:
Après:
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.
la source
Ce qui m'a aidé à résoudre ce problème était-
la source