Ich habe ein ähnliches Problem.
Ich habe ein Spiel in Querformat arbeitet (links und rechts Landschaft).
Um eine Multi-View-Anwendung ich eine Wurzel UIViewController verwenden zu verwalten, dh einen Dummy-Uiviewcontroller mit einem UIView, die nichts tut. Ich füge dann alle anderen UIView, um es als ein Subview.
Wenn Sie die App starten, dreht sich der Emulator schnell zu einem Hochformat, und ich bekomme alle meine Ansichten mit seinen Rahmen Immobilien suchen, wie (0, -80320480). Daraus ergibt sich die Ansicht von einem 160 X 320 Rechteck auf der rechten Seite abgeschnitten werden.
Ich habe bemerkt, dass die - ShouldAutorotateToInterfaceOrientation: Methode jedes subview nur einmal aufgerufen wird, und das geschieht, wenn es um die Stammansicht hinzugefügt wird. Später, wenn die Vorrichtung gedreht wird, nur die Stammansicht bekommt ist es Methode aufgerufen.
Es überrascht nicht, eine der - willAnimate * Methoden Anrufe wird nur in die Stammansicht gesendet, so, Definieren jedes dieser Verfahren in Subviews sinnlos.
Diese Methoden werden als jedes Mal die Orientierung in eine Orientierung geändert angenommen durch die - ShouldAutorotateToInterfaceOrientation: Methode. so dass ich dachte, ich könnte meine Subviews' -Rahmen Eigenschaft von dort chnage.
Um dies zu erreichen, definierte ich die folgende Methode in meiner RootViewController Klasse:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
subview1_ViewController.view.frame = CGRectMake(0,0,480,320);
subview2_ViewController.view.frame = CGRectMake(0,0,480,320);
...
}
Ich verstehe nicht, warum die Rahmen-Eigenschaft nicht aktualisiert wird, aber ich weiß, diese Problemumgehung funktioniert.
Hoffe das hilft....