Estoy creando un juego que permite que el dispositivo esté en orientación horizontal o vertical, y el reproductor puede cambiar la orientación mientras está en pausa. Cuando lo hagan, necesito cambiar la forma en que el juego interpreta el acelerómetro en función de la orientación.iOS 6 - Cómo ejecutar código personalizado cuando cambia la orientación
En iOS 5 usé willRotateToInterfaceOrientation para detectar cambios y cambiar mis variables, pero eso está obsoleto en iOS6. Mi código existente se ve así:
if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
rect = screenRect;
else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
rect.size = CGSizeMake(screenRect.size.height, screenRect.size.width);
GameEngine *engine = [GameEngine sharedEngine];
if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){
engine.orientation = -1;
} else {
engine.orientation = 1;
}
}
entiendo que la sustitución es el método viewWillLayoutSubviews en la clase UIViewController. Estoy construyendo este juego en Cocos2d 2.1 y no parece haber una clase UIViewController en el proyecto de demostración, así que no tengo claro cómo incorporarlo y cómo debe verse el código para que esto funcione.
+1 opción correcta para la tarea dada. Solo ten cuidado ya que también recibirás una notificación sobre los cambios de orientación bocabajo y hacia abajo y considerar la diferencia entre 'UIInterfaceOrientation ...' y 'UIDeviceOrientation ...' – Till
@Darren que era exactamente lo que necesitaba. ¡Gracias! –
@Till: ¿por boca arriba o por abajo te refieres cuando se orienta hacia el retrato o el retrato al revés? ¿O algo mas? Además, asumí que DeviceOrientation y InterfaceOrientation son casi siempre los mismos, excepto en circunstancias especiales, como vistas múltiples, o si la InterfaceOrientation se configuró programáticamente para que no coincida con la orientación del dispositivo. ¿O hay otras instancias para tener en cuenta que podrían causar un problema? –