Van egy hasonló probléma.
Van egy játék dolgozó fekvő helyzetben (jobb és bal táj).
Annak érdekében, hogy kezelni egy multi-view alkalmazás azt használja a gyökér UIviewController, azaz hatóanyag nélküli UIViewcontroller egy UIview hogy nem csinál semmit. Aztán hozzá minden UIview rá, mint egy subview.
Indításakor az alkalmazás, az emulátor gyorsan forog, hogy a tájolása, és én kap minden az én egyik nézetek vele frame tulajdonság néz ki, mint a (0, -80320480). Ez eredményezi a nézetet felklippeljük egy 160 X 320 téglalap a jobb oldalon.
Úgy vettem észre, hogy a - shouldAutorotateToInterfaceOrientation: eljárás egyes subview csak egyszer hívja, és akkor történik, ha hozzáadjuk a gyökér kilátás. Később, amikor a készülék forgatása csak gyökérnézetéhez kap ez a módszer az úgynevezett.
Nem meglepő, hogy az egyik a - willAnimate * módszerek hívások csak akkor küldi el a gyökér nézet, így meghatározó az ilyen eljárásokban a subviews értelmetlen.
Ezeket a módszereket nevezzük everytime a tájolás változik orientációs által elfogadott - shouldAutorotateToInterfaceOrientation: módszer. így gondoltam én is chnage én subviews' frame tulajdonság onnan.
Hogy ezt, megadtam a következő módszerrel én rootViewController osztály:
- (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);
...
}
Nem értem, hogy miért a keret tulajdonság nem frissül, de tudom, hogy ez a megoldás működik.
Remélem ez segít....