Я виявив інший підхід. Це в основному: Move = Cut + Paste
Таким чином ви робите:
- отримати усі свої підпрограми, щоб бути дочірніми для нового батьківського подання (P ')
- зберігайте (майже) всі свої обмеження в розкадруванні на основі автоматичного макета
- зберігайте відносні позиції (фрейми) вашого підпрогляду один до одного
Таким чином ви не робите:
- редагувати файл Storyboard в текстовому редакторі
Справа в тому, що кожне представлення, крім одного (кореневого) в Storyboard, має батьківський погляд . Далі, під час копіювання / переміщення декількох підпроглядів ви втрачаєте рамки та обмеження .
Відповідь досить проста. Ви робите копію своїх підпрозорів (SV), копіюючи їх батьківський подання (P) в новий батьківський подання (P '). Таким чином, вам може знадобитися відтворити лише обмеження з цього батьківського нового подання (P ') до його нового батьківського подання, але не для кожного підпрогляду, який ви хотіли перемістити.
Після того, як ви зробили копію батьківського подання (P) в новий (P '), з цього нового подання (P') ви:
- видаліть усіх дітей, крім тих, кого ви хотіли перенести
- відтворити нові батьківські (P ') обмеження
- відтворити можливі точки побудови інтерфейсу до (SV)
І з оригінального батьківського подання (P) ви:
- видаліть усіх дітей, яких ви хотіли переїхати
До:
Вид1
Вигляд2
P
SV-ви-хочете переїхати
SV-ти-ти-не-хочеш-рухатись
Вигляд3
Після:
Вид1
Вигляд2
P
SV-ти-ти-не-хочеш-рухатись
Вигляд3
P '
СВ-ти хочеш переїхати
Я повинен наголосити, що це не узагальнює добре, якщо у вас, наприклад, UIScrollView є батьківським видом. Тоді його копія знову буде UIScrollView, що може бути небажаним.
Інша справа, що коли ви видаляєте деякі підпрограми (SV) у вихідному батьківському поданні (P), можливо, вам доведеться відтворити деякі обмеження, якщо інші (непереміщені підподання) посилаються на них. Але ви все одно повинні це зробити.