Problemas de rotación de la pantalla de iPad OpenGL (barra multitarea y ventanas emergentes que no giran)

StackOverflow https://stackoverflow.com/questions/5357457

Pregunta

Estoy creando una aplicación para el iPad usando OpenGL y tengo problemas con la rotación de la pantalla. La aplicación en sí funciona bien y se muestra correctamente en las cuatro orientaciones, pero otros elementos solo responden parcialmente a la rotación del dispositivo.

OpenGL maneja la rotación de la aplicación utilizando matrices de transformación. Todo eso funciona bien. Las imágenes predeterminadas también se muestran en la rotación correcta.

Sin embargo, la barra multitarea no está girando como debería. Parece en el lado que se abrió la aplicación. Por lo tanto, si abro la aplicación, toque doble del botón de inicio, está en el lado correcto, pero después de girar el dispositivo permanece en el mismo lado hasta que la aplicación esté cerrada y reabrida. Cuando se revela esta barra, la aplicación OpenGL gira para que coincida con la posición de la barra.

Los cuadros de diálogo, como la ventana emergente de 'iniciar sesión en el centro de juego', tampoco se giran correctamente. Parecen aparecer en la orientación estándar del retrato.

No estoy seguro de si hay otros detalles específicos necesarios para identificar el problema, pero cualquier sugerencia es muy apreciada.

¿Fue útil?

Solución

Parece que he reunido una solución mirando fragmentos en otros hilos. Creo que ha solucionado el problema.

Tengo una clase principal que controla la mayor parte de mi aplicación. Ya estaba registrado para recibir notificaciones de rotación del dispositivo como esta:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

Agregué algunas líneas a la función del controlador de orientación para establecer manualmente la ubicación de la barra de estado:

- (void) updateOrientation {
    if ([[UIDevice currentDevice] orientation] < 5 && [[UIDevice currentDevice] orientation]>0) {
        orientation = [[UIDevice currentDevice] orientation];
        [UIApplication sharedApplication].statusBarOrientation = orientation;
    }
}

El condicional limita al controlador para responder solo al paisaje y las orientaciones de retratos y no boca arriba y boca abajo.

Si alguien tiene una mejor solución, todavía me gustaría escucharla, de lo contrario, espero que esto pueda ayudar a alguien más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top