Enseñar distintas UIViews cuando se rota el iPhone o iPad

Autor: | Última modificación: 9 de noviembre de 2022 | Tiempo de Lectura: 1 minutos
Temas en este post:

UIViews

Aunque puedes crear una vista que se adapta a la orientación horizontal y vertical, no es nada sencillo el hacerlo en caso de tener una jerarquía de UIViews no trivial.  La posibilidad de enseñar vistas distintas dependiendo de la orientación es interesante por varias razones distintas:

  1. Tu vista es muy compleja y resulta imposible o muy difícil reaprovecharla en una orientación distinta.
  2.  Quieres aprovechar el mayor espacio horizontal en las orientaciones «landscape» para incluir nuevas caraterísticas. Un ejemplo es la calculadora de Apple que en horizontal se transforma en una calculadora científica, incorporando nuevos botones.
  3. Utilizas algún control que ocupa demasiado espacio en horizontal, como es el caso de UIPickerView.

Además de la calculadora de Apple, otra aplicación que utiliza esto de forma muy interesante es WeightBot de TapBots, que enseña  distintos gráficos según la orientación.

No sé cual será la solución que han buscado Apple y TapBots para esto, pero la mía ha sido de crear un nuevo controlador de controladores, es decir, un controlador que controla a otros sub-controladores, como UINavigationController.

FRRRotatingViewController tiene 2 subcontroladores y su inicializador designado es:

-(FRRRotatingViewController *) 
   initWithLandscapeViewController: (UIViewController *) landscape 
         andPortraitViewController: (UIViewController *) portrait;

Para detectar la rotación, observa la notificación UIDeviceOrientationDidChangeNotification  y en el método que registra para dicha notificación procede a cambiar la vista.

El código completo está disponible aquí.

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.