25

Si se desplaza hacia abajo un poco en este Apple Developer Page encontrará la sección "Creación de un paisaje interfaz alternativa". El enfoque básico descrito aquí es presentar un archivo NIB diferente como una vista modal cuando cambia la orientación. Estoy usando la función Storyboard, así que no tengo NIB. ¿Cómo cargo una "escena" diferente en ese caso?iPhone Storyboard: escena diferente para el retrato y el paisaje

Además de eso, estoy usando un controlador de la barra de pestañas, no quiero para mostrar una vista modal. Solo quiero reemplazar la vista de retrato actual con una vista de paisaje diseñada con el constructor de interfaz y mantener mi barra de pestañas. ¿Cuál sería el modo Storyboard para lograr la tarea "Creating an Alternate Landscape Interface"? Gracias.

Respuesta

19

Cuando agrega un controlador de vista al guión gráfico, viene con una vista. Llamar a eso la vista de contenedor. Agregue dos vistas a la vista de contenedor: una vista de retrato y una vista de paisaje. Establezca la dimensión de la vista vertical y la vista horizontal de forma adecuada con el inspector de tamaño. Agregue botones, más vistas, etiquetas o lo que sea a las vistas vertical y horizontal según sea necesario para su aplicación. Luego, cuando la orientación cambie, oculte una vista y muestre la otra.

+1

enfoque interesante. Intentaremos eso. Gracias – Korbi

+5

¿Qué pasa si usa IBOutlets, que solo se pueden asignar a una sola vista. – Paranaix

+1

@Paranaix Es posible que no entienda completamente su comentario. La pregunta original plantea el requisito de tener diferentes interfaces para el modo horizontal y vertical. Si está buscando un diseño diferente para la misma interfaz, ese es un problema diferente. Tal vez deberías plantearte una pregunta completamente nueva. –

2

Puede configurar un controlador de navegación y una vista principal. Luego puede usar una vista de plantilla para los diseños de retrato y paisaje (2 vistas adicionales).

Usted tendrá que configurar los controles en la vista principal y asegúrese de que cada uno tiene una etiqueta única. No se usará su vista principal, en su lugar, copiará los controles en las dos vistas de plantilla y las configurará en función de cómo quiera que se vea cada vista. El beneficio de esto es que cada vista conservará su etiqueta, que se convierte en una pieza muy importante de esta implementación.

Hacer esto se utiliza un enfoque híbrido en lo que respecta a la escritura de un código de interfaz de usuario y el uso de Interface Builder. Después de obtener la configuración de dos plantillas, cree un identificador único para cada una. Tendrá que escribir algo de lógica para manejar la vista y sus subvistas. Un método recursivo para devolver una colección de estos en función de la plantilla que elija.

La lógica de la base de la raíz vista de la implementación del controlador tendrá que comprobar para isPortrait y en base a esto tendrá que cargar el punto de vista correcto basado en el identificador.

Experimente con este concepto y vea si le funciona. Los principales beneficios de no usar dos vistas separadas con controles únicos (no el enfoque compartido con las mismas etiquetas) es que usted mantiene el acceso a sus subvistas originales. Cualquier variable de instancia que defina en su controlador de vista que apunte a un texto archivado, etiqueta, etc. continúa haciéndolo independientemente de la vista de plantilla que se use. Esto mantiene el enfoque de modelo, vista y controlador ya que la estructura de datos permanece sin cambios.

uso de este enfoque todavía se puede maximizar el uso del constructor de interfaces, y el diseño de las plantillas para cada vista, sin dejar de tener la flexibilidad necesaria para escribir código interfaz de usuario personalizada si así lo desea. Usar solo el constructor de interfaces puede ser un poco limitante a veces, y escribir un código personalizado basado en la orientación lo encierra en un poco de trabajo tedioso.

Espero que esto ayude a algunos.

0

Puede hacer un archivo xib que contenga 2 uiviews, un retrato delantero y otro para el paisaje. Asigna como propietario del archivo xib, el mismo controlador de vista de la vista que tienes en el guión gráfico. En viewDidLoad cargue el archivo xib y agregue la vista apropiada para vertical u horizontal.

Así que si tiene un guión gráfico con muchos controles de vista, puede establecer las dos posibilidades (vista vertical u horizontal) solo en los controladores de vista que le interesan para cambiar la orientación.

¡Utilicé esta solución y funciono muy bien!

Cuestiones relacionadas