Ich habe einen anderen Ansatz entdeckt. Es ist im Grunde: Verschieben = Ausschneiden + Einfügen
So machen Sie:
- Holen Sie sich alle Ihre Unteransichten zu Kindern der neuen übergeordneten Ansicht (P ').
- Behalten Sie (fast) alle Ihre Einschränkungen im Auto-Layout-basierten Storyboard bei
- Behalten Sie die relativen Positionen (Frames) Ihrer Unteransicht zueinander bei
Auf diese Weise tun Sie nicht:
- Bearbeiten Sie die Storyboard-Datei in einem Texteditor
Basis ist, dass jede Ansicht außer einer (root) in Storyboard ihre übergeordnete Ansicht hat . Wenn Sie mehrere Unteransichten kopieren / verschieben, verlieren Sie Frames und Einschränkungen .
Die Antwort ist ziemlich einfach. Sie erstellen eine Kopie Ihrer Unteransichten (SVs), indem Sie deren übergeordnete Ansicht (P) in die neue übergeordnete Ansicht (P ') kopieren. Auf diese Weise müssen Sie möglicherweise nur Einschränkungen von dieser übergeordneten neuen Ansicht (P ') zu ihrer neuen übergeordneten Ansicht neu erstellen, jedoch nicht für jede Unteransicht, die Sie verschieben möchten.
Nachdem Sie eine Kopie der übergeordneten Ansicht (P) in eine neue (P ') erstellt haben, haben Sie aus dieser neuen Ansicht (P') Folgendes:
- Entfernen Sie alle Kinder außer denen, die Sie bewegen wollten
- Erstellen Sie neue übergeordnete (P ') Einschränkungen neu
- Erstellen Sie mögliche Interface Builder-Outlets für (SVs) neu.
Und aus der ursprünglichen übergeordneten Ansicht (P):
- Entfernen Sie alle Kinder, die Sie bewegen wollten
Vor:
Ansicht1
View2
P.
SVs-du-willst-umziehen
SVs-du-willst-dich-nicht-bewegen
View3
Nach dem:
Ansicht1
View2
P.
SVs-du-willst-dich-nicht-bewegen
View3
P '
SVs-du-willst-umziehen
Ich sollte betonen, dass dies nicht gut verallgemeinert wird, wenn Sie zB UIScrollView als übergeordnete Ansicht haben. Dann wäre eine Kopie davon wieder eine UIScrollView, was möglicherweise nicht wünschenswert ist.
Eine andere Sache ist, wenn Sie einige der Unteransichten (SVs) in der ursprünglichen übergeordneten Ansicht (P) entfernen, müssen Sie möglicherweise einige Einschränkungen neu erstellen, wenn andere (nicht bewegliche Unteransichten) auf sie verweisen. Aber das solltest du trotzdem tun.