Sto creando un gioco che consente al dispositivo di essere in orientamento orizzontale o sinistro o orizzontale e il lettore può modificare l'orientamento mentre è in pausa. Quando lo fanno ho bisogno di cambiare il modo in cui il gioco interpreta l'accelerometro in base all'orientamento.iOS 6 - Come eseguire codice personalizzato quando cambia l'orientamento
In iOS 5 ho utilizzato willRotateToInterfaceOrientation per rilevare le modifiche e modificare le variabili, ma questo è deprecato in iOS6. Il mio codice esistente è simile al seguente:
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;
}
}
Capisco che la sostituzione è il metodo viewWillLayoutSubviews nella classe UIViewController. Sto costruendo questo gioco in cocos2d 2.1 e non sembra che ci sia una classe UIViewController nel progetto demo, quindi non sono chiaro su come incorporarlo e come dovrebbe apparire il codice per farlo funzionare.
+1 corretta opzione per il compito affidato. Basta fare attenzione poiché si riceverà anche una notifica sui cambiamenti di orientamento a faccia in su rispetto a -down e si occuperà della differenza tra "UIInterfaceOrientation ..." e "UIDeviceOrientation ..." – Till
@Darren che era esattamente ciò di cui avevo bisogno. Grazie! –
@Till - a faccia in su contro verso il basso intendi quando si orienta in verticale o verticale capovolto? O qualcos'altro? Inoltre, ho assunto DeviceOrientation e InterfaceOrientation sono quasi sempre gli stessi, tranne in circostanze particolari come più viste, o se InterfaceOrientation è stato impostato programmaticamente per non corrispondere all'orientamento del dispositivo. O ci sono altri casi da considerare che potrebbero causare un problema? –