Pregunta No puedo entender el mecanismo de rotación en iOS6


Mi aplicación tiene subclases de controladores de vista shouldautorotateToInterfaceOrientation. Y en ella, decido la rotación de cada vista. Esto funciona correctamente Pero en iOS6, aunque leo los documentos proporcionados por Apple, no lo entiendo.

Mi aplicación tiene controlador de navegación como controlador de vista de raíz. Este controlador de navegación tiene un controlador de pestañas. Y el controlador de pestañas tiene algunos controladores de vista. Quiero que el primer controlador de vista (en el controlador de pestañas) se vea solo como modo vertical y el segundo controlador de vista (en el controlador de pestañas) visualice tanto el modo retrato como el modo paisaje. Funciona correctamente en iOS5. Pero no sé cómo hacerlo en iOS6. Aunque sé que debería subclase apoyadoInterfazOrientaciones, no funciona cuando la rotación ocurre. Para mi sorpresa se llama cuando se muestra una vista. ¿Cómo hacer lo que quiero?

Gracias por leer.


5
2017-10-01 07:45


origen


Respuestas:


El siguiente enlace podría guiarlo en la dirección correcta: http://code.shabz.co/post/32051014482/ios-6-supportedorientations-with-uinavigationcontroller

Básicamente, debe subclase UINavigationController y hacer que escuche los cambios en -supportedInterfaceOrientations de su topViewController. Hay una clase de muestra que puede descargar en la publicación del blog y también explica qué código agregar.


8
2017-10-01 07:52



Cuando utilizas UINavigationController o UITabbarViewController, la aplicación siempre hace lo que dicen en su shouldAutorotate, supportInterfaceOrientations métodos.

Puede agregar una categoría para que redirijan estos métodos al controlador que muestran actualmente. Me gusta esto:

 @implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end

Similar para UITabbarViewController.


0
2017-10-01 13:07



En mi opinión, esta es la mejor explicación que he encontrado: http://www.widemann.net/wp-fr/?p=662 pero esta en frances

Tal vez tenga sentido con google traduction en inglés


0
2017-10-03 11:37