iOS 6 - So führen Sie benutzerdefinierten Code aus, wenn sich die Ausrichtung ändert

Ich erstelle ein Spiel, bei dem das Gerät entweder links oder rechts im Querformat ausgerichtet ist und der Spieler die Ausrichtung ändern kann, während es angehalten ist. In diesem Fall muss ich die Art und Weise ändern, in der das Spiel den Beschleunigungsmesser basierend auf der Ausrichtung interpretiert.

In iOS 5 habe ich willRotateToInterfaceOrientation verwendet, um Änderungen zu erfassen und meine Variablen zu ändern, aber das ist in iOS6 veraltet. Mein vorhandener Code sieht folgendermaßen aus:

    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;
    }
}

Ich verstehe, dass der Ersatz die viewWillLayoutSubviews-Methode in der UIViewController-Klasse ist. Ich baue dieses Spiel in cocos2d 2.1 und es scheint keine UIViewController-Klasse im Demo-Projekt zu geben, daher bin ich nicht sicher, wie ich es einbauen soll und wie der Code aussehen soll, damit dies funktioniert.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage