FullScreenIPhone_rotation_bars

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

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í.

Acerca de Fernando Rodriguez

Fundador & Editor Jefe de justcodeit, Fernando Rodríguez (@frr149 & Linkedin) es desarrollador & un experto en la enseñanza de máxima calidad en programación y desarrollo para dispositivos iOS, Cocoa Touch, Objective C, Swift, Python, entre otros, aunque su mejor carta de presentación, es la opinión de sus alumnos: http://keepcoding.io/es/testimonio/ CLO en KeepCoding & Arunovo. Instructor de iOS Avanzado del Big Nerd Ranch. Profesor Asociado de la U-tad, autor invitado de revistas como iPhoneWorld, Applesfera.com & ponente habitual en conferencias dentro y fuera de España (iOSDevUK, CodeMotion, BCNDevCon, etc). En sus vidas anteriores fue un nerd de Python y Django, mago de Smalltalk, y para su pesar, galeote de C++ y un gran cocinero.

Share this:

Leave a comment