iOS 6 - Jak uruchomić niestandardowy kod po zmianie orientacji
Tworzę grę, która pozwala urządzeniu na orientację poziomo-lewą lub krajobrazową, a gracz może zmienić orientację podczas pauzy. Kiedy to zrobię, muszę zmienić sposób, w jaki gra interpretuje akcelerometr na podstawie orientacji.
W iOS 5 użyłem willRotateToInterfaceOrientation do przechwytywania zmian i zmiany moich zmiennych, ale jest to przestarzałe w iOS6. Mój istniejący kod wygląda tak:
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;
}
}
Rozumiem, że zastąpienie to metoda viewWillLayoutSubviews w klasie UIViewController. Buduję tę grę w cocos2d 2.1 i nie wydaje się, aby w projekcie demonstracyjnym była klasa UIViewController, więc nie jestem pewien, jak ją włączyć i jak powinien wyglądać kod, aby ta praca działała.