ios xcode cocos2d-iphone ios6 device-orientation

iOS 6: cómo ejecutar un código personalizado cuando cambia la orientación



xcode cocos2d-iphone (1)

Escuche los cambios de orientación del dispositivo:

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

Cuando se le notifique, obtenga la orientación del dispositivo desde UIDevice:

- (void)deviceOrientationDidChangeNotification:(NSNotification*)note { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; switch (orientation) { // etc... } }

Estoy creando un juego que permite que el dispositivo esté en orientación horizontal izquierda o horizontal, y el jugador 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.

En iOS 5 utilicé willrotateToInterfaceOrientation para detectar cambios y cambiar mis variables, pero eso está obsoleto en iOS6. Mi código actual 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 el reemplazo 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.