O que eu gostaria de fazer é arrastar um componente / visualização de um superview para outro no construtor de interface do Xcode sem que seu quadro / posição seja redefinido.
O comportamento padrão do Xcode ao fazer isso parece ser centralizar a visualização sendo movida vertical e horizontalmente em sua nova supervisão, enquanto preserva suas dimensões. Isso é extremamente frustrante, pois significa que a visualização precisa ser reposicionada manualmente em sua nova supervisão. Mas eu o tinha posicionado corretamente antes de movê-lo, então gostaria que o Xcode apenas se lembrasse de todos os atributos de seu quadro em vez de apenas sua largura / altura. Isso é possível?
ios
xcode
interface-builder
aroth
fonte
fonte
Respostas:
Outra solução:
fonte
Eu encontrei algo que pode ajudar vocês!
A tarefa é reagrupar "visualizações filho" em "visualização pai" para que se tornem filhos da visualização pai hierarquicamente e retenham as posições físicas em exibição como antes da ação.
Primeiro, ajuste a visualização pai para cobrir fisicamente a área das visualizações filho. Em segundo lugar, certifique-se de que todas as crianças estão abaixo dela na lista de visualizações.
Agora selecione todos os filhos com o mouse e mova-os, por exemplo, um pixel para cima e um pixel para baixo (apenas para dizer IB, há alguma mudança). Depois disso, liberte os filhos e eles magicamente se tornarão filhos dos pais e manterão suas posições em exibição.
Funciona para mim no OSX 10.8.2 e no Xcode 4.6.
Boa sorte!
fonte
Consegui economizar muito tempo gasto reposicionando coisas e fiz o seguinte:
Não muito elegante, porém, não consigo ver porque o XCode não oferece suporte para Shift ou algo assim.
fonte
Selecione todos os controles que deseja mover de um UIView para outro UiView (ou seja, filho) ou ScrollView
Cortar copiar
Agora, depois de arrastar o novo UIView / ScrollView para o UIView existente, não clique uma vez para selecioná-lo, em vez disso, clique DOUBLE no novo UIView / ScrollView e cole todos os controles.
A diferença de distância permanecerá a mesma entre todos os controles, mas você pode ter que reposicionar os controles novamente. Portanto, não clique em nenhum lugar antes de reposicioná-los, apenas reposicione todos os controles pelas setas de navegação, visto que já estão todos selecionados, ou você pode selecioná-los novamente.
NOTA: Estou no XCode 4.2
fonte
Fiz algo semelhante à solução de Stepan, sem usar um storyboard. No IB enquanto a visualização do ViewController está aberta:
fonte
Esta é a melhor solução para copiar subvisualizações para outra visão e reter as posições:
A etapa 6 removeria a visualização de incorporação e você terá copiado apenas as subvisualizações.
fonte
O Xcode Interface Builder bagunça quando uma visualização pai é arrastada e solta em outra visualização (UIView, ScrollView, StackView)
P:
Incorporar uma visualização (que contém muitas outras subvisualizações) em um ScrollView ou em outra visualização de nível superior não é tão direto com o que vi até agora. O que acontece logo depois é que todas as subvisualizações podem parecer ter sido colocadas no lugar errado, pois não encontraram seu quadro original.
R:
Siga as etapas a seguir e você será capaz de resolver o mais fácil possível:
Não, ainda não terminei! Às vezes, você pode perceber que há mais alguns problemas relacionados à restrição da interface do usuário; você terá que resolvê-los de acordo.
fonte
Eu detectei outra abordagem. É basicamente: Mover = Cortar + Colar
Assim você faz:
Desta forma, você não:
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ê:
E da visão pai original (P) você:
Antes:
Depois de:
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.
fonte
O que me ajudou a resolver esse problema foi-
fonte