iOS 6 - Como executar um código personalizado quando a orientação muda
Estou criando um jogo que permite que o dispositivo esteja na orientação paisagem esquerda ou paisagem direita, e o jogador pode alterar a orientação enquanto estiver em pausa. Quando preciso, preciso mudar a maneira como o jogo interpreta o acelerômetro com base na orientação.
No iOS 5, usei o método willRotateToInterfaceOrientation para capturar alterações e alterar minhas variáveis, mas isso está obsoleto no iOS6. Meu código existente é assim:
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;
}
}
Eu entendo que a substituição é o método viewWillLayoutSubviews na classe UIViewController. Eu estou construindo este jogo no cocos2d 2.1 e não parece haver uma classe UIViewController no projeto demo, então não estou claro sobre como incorporá-lo e como o código deve parecer para que isso funcione.