Eu detectei outra abordagem. É basicamente: Mover = Cortar + Colar
Assim você faz:
- faça com que todas as suas subvisualizações sejam filhas da nova visão pai (P ')
- mantenha (quase) todas as suas restrições no storyboard baseado em layout automático
- mantenha as posições relativas da sua subvisualização (frames) uma para a outra
Desta forma, você não:
- editar arquivo de storyboard em um editor de texto
O fato é que cada visualização, exceto uma (raiz) no Storyboard, tem sua visualização pai . Em seguida, quando você copia / move várias subvisualizações, você perde quadros e restrições .
A resposta é bastante simples. Você faz uma cópia de suas subvisualizações (SVs) copiando sua visão pai (P) para a nova visão pai (P '). Dessa forma, você pode precisar recriar apenas as restrições daquela nova visão pai (P ') para sua nova visão pai, mas não para cada subvisualização que você deseja mover.
Depois de fazer uma cópia da visão pai (P) para a nova (P '), a partir dessa nova visão (P') você:
- remova todos os filhos, exceto aqueles que você queria mover
- recriar novas restrições pai (P ')
- recriar possíveis saídas do Interface Builder para (SVs ')
E da visão pai original (P) você:
- remova todas as crianças que você queria mover
Antes:
View1
View2
P
SVs-que-você-deseja-mover
SVs-você-não-quer-mudar
View3
Depois de:
View1
View2
P
SVs-você-não-quer-mudar
View3
P '
SVs'-você-quer-mudar
Devo enfatizar que isso não generaliza bem se você tiver, por exemplo, UIScrollView como visualização pai. Então, uma cópia dele seria novamente um UIScrollView, o que pode não ser desejável.
Outra coisa é quando você remove algumas das subvisualizações (SVs) na visão pai original (P), você pode precisar recriar algumas restrições se outras (subvisualizações não móveis) fizerem referência a elas. Mas você deve fazer isso de qualquer maneira.