features - xcode version for ios 12
Xcode: ¿hay alguna manera de arrastrar un componente de una vista a otra sin perder su marco? (7)
Seleccione todos los controles que desea mover de una UIView a otra UiView (nay be child) o ScrollView
Cortar pegar
Ahora, después de arrastrar el nuevo UIView / ScrollView a su UIView existente, no haga clic una vez para seleccionarlo, en su lugar HAGA DOBLE clic en el nuevo UIView / ScrollView y pegue todos los controles.
La diferencia de distancia se mantendrá igual entre todos los controles, pero es posible que deba volver a colocar los controles. Por lo tanto, no haga clic en ningún lugar hasta que los haya reposicionado, simplemente cambie la posición de todos los controles mediante las flechas de navegación, ya que todos están seleccionados, o puede seleccionarlos nuevamente.
NOTA: Estoy en XCode 4.2
Lo que me gustaría hacer es arrastrar un componente / vista de una supervista a otra en el constructor de interfaz de Xcode sin tener que restablecer su marco / posición.
El comportamiento predeterminado de Xcode al hacer esto parece ser centrar la vista que se mueve vertical y horizontalmente en su nueva supervista, conservando sus dimensiones. Esto es extremadamente frustrante, ya que significa que la vista debe reposicionarse manualmente en su nueva supervista. Pero lo tenía colocado correctamente antes de moverlo, por lo que me gustaría que Xcode simplemente recuerde todos los atributos de su marco en lugar de solo su ancho / alto. es posible?
¡Encontré algo que podría ayudarlos chicos!
La tarea consiste en reagrupar "vistas secundarias" en "vista principal" para que se conviertan jerárquicamente en elementos secundarios de la vista principal y conserven las posiciones físicas en la pantalla como antes.
Primero, ajuste la vista principal para cubrir físicamente el área de las vistas secundarias. Segundo, asegúrese de que todos los niños estén debajo de él en la lista de vistas.
Ahora seleccione todos los niños con el mouse y muévalos, por ejemplo, un píxel hacia arriba y un píxel hacia abajo (solo para decir IB hay algún cambio). Después de ese lanzamiento, los niños se convertirán mágicamente en hijos de los padres y mantendrán sus posiciones en exhibición.
Funciona para mí en OSX 10.8.2 y Xcode 4.6.
¡Buena suerte!
Detecté otro enfoque. Básicamente es: mover = cortar + pegar
De esta manera lo haces:
- obtener todas sus subvistas para ser hijos de la nueva vista principal (P '')
- mantenga (casi) todas sus restricciones en Storyboard basado en diseño automático
- mantenga las posiciones relativas (marcos) de su subvista una a otra
De esta manera no lo haces:
- editar archivo Storyboard en un editor de texto
La base es que cada vista excepto una (raíz) en Storyboard tiene su vista principal . A continuación, cuando copia / mueve múltiples subvistas, pierde marcos y restricciones .
La respuesta es bastante simple. Hace una copia de sus subvistas (SV) copiando su vista principal (P) en la nueva vista principal (P ''). De esta forma, es posible que deba volver a crear las restricciones desde esa nueva vista principal (P '') hasta su nueva vista principal, pero no para cada subvista que desee mover.
Después de hacer una copia de la vista principal (P) en una nueva (P ''), desde esa nueva vista (P'') usted:
- eliminar a todos los niños, excepto los que querías mover
- recrear nuevas restricciones parentales (P '')
- recrear posibles salidas de Interface Builder a (SVs)
Y desde la vista principal original (P) usted:
- eliminar a todos los niños que quería mover
Antes de:
View1
View2
PAG
SVs-usted-quiere-moverse
SVs-you-do-not-want-to-move
View3
Después:
View1
View2
PAG
SVs-you-do-not-want-to-move
View3
PAG''
SVs''-quieres-moverte
Debo enfatizar que esto no se generaliza bien si tienes, por ejemplo, UIScrollView como vista principal. Entonces, una copia de este sería nuevamente un UIScrollView, lo que puede no ser deseable.
Otra cosa es cuando eliminas algunas de las subvistas (SV) en la vista padre original (P), puede que necesites recrear algunas restricciones si otras (subvistas no movibles) las referencian. Pero deberías hacer eso de todos modos.
Esta es la mejor solución para copiar las subvistas a otra vista y conservar las posiciones:
- Seleccione los elementos que desea en su subvista, luego
- Editor -> Insertar en -> Ver
- Copie esta vista (Cmd + C)
- Deshacer (Cmd + Z) (ya que solo quería las subvistas)
- Vaya a la vista en la que desea las subvistas y péguelo (Cmd + V)
- Seleccione la Vista incrustada que copió y pegó y el Editor -> Desnudo
El paso 6 eliminaría la vista de inserción y habrá copiado solo las subvistas.
He hecho algo similar a la solución de Stepan, sin usar un guión gráfico. En el IB mientras la vista de ViewController está abierta:
- Crear otra vista además de la vista principal de VC
- Mueva todas las subvistas a la segunda vista arrastrándolas de una vista a otra (arrastrando de la lista en el lado izquierdo restablece su posición) Si no puede seleccionarlas desde la IB con el mouse, seleccione todas de la lista en el lado izquierdo, luego seleccione una subvista final del panel IB usando el botón "cmd".
- Llévelos de regreso a la vista final en la vista principal inicial.
- Eliminar la vista agregada, todo configurado.
Logré ahorrar mucho tiempo en reposicionar cosas e hice esto:
- Agregue la vista principal en Interface Builder en el mismo nivel que las subvistas potenciales.
- Abra el guión gráfico en un editor de texto y copie las posibles subvistas dentro de las etiquetas de las subvistas de la vista principal. XCode se actualizará una vez que lo guarde.
Aunque no es muy elegante, no puedo ver por qué XCode no lo admite con Shift o algo así.
Otra solución:
- Seleccione los elementos que desea en su subvista, luego
- (en la barra de herramientas) Editor -> Incrustar en -> tipo de vista para incrustar en.