Ik heb een soortgelijk probleem.
Ik heb een spel werken in liggende stand (zowel links als rechts landschap).
Om een multi-view toepassing gebruik ik een wortel UIViewController beheren, dat wil zeggen een dummy UIViewController met een UIView dat niets doet. Ik voeg dan elke andere UIView om het als een subweergave.
Bij het starten van de app, de emulator draait snel naar een staand, en ik krijg een ieder van mijn standpunten met zijn frame van onroerend goed uitzien als (0, -80.320.480). Dit resulteert in het oog uitgeknipt door een 160 x 320 rechthoek aan de rechterzijde.
Ik heb gemerkt dat de - shouldAutorotateToInterfaceOrientation: methode van elk subview wordt slechts een keer genoemd, en dat gebeurt wanneer het wordt toegevoegd aan de wortel uitzicht. Later, wanneer het draaien van de inrichting, alleen de root weergave krijgt zijn methode genaamd.
Uiteraard, elk van de - * willAnimate methoden oproepen alleen naar de wortel bekijken, zodat, definieert elk van deze werkwijzen subviews zinloos.
Deze werkwijzen worden opgeroepen telkens de oriëntatie wordt gewijzigd naar een oriëntatie van de aanvaarde - shouldAutorotateToInterfaceOrientation: methode. dus ik dacht dat ik kon kader pand mijn subviews' vanaf daar chnage.
Om dit te bereiken, ik definieerde de volgende methode in mijn rootViewController klas:
- (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);
...
}
Ik begrijp niet waarom de eigenschap frame niet bijgewerkt, maar ik weet dat deze oplossing werkt.
Ik hoop dat dit helpt....