У меня аналогичная проблема.
У меня есть игра работает в альбомной ориентации (как левый и правый пейзаж).
Для управления приложения в нескольких проекциях, я использую корень UIViewController, т.е. фиктивный UIViewController с UIView, который ничего не делает. Я затем добавить все остальные UIView к нему как подвид.
При запуске приложения, эмулятор быстро вращается в портретной ориентации, и я получаю каждый из моих взглядов с его свойство рамка выглядит как (0, -80,320,480). Это приводит к тому мнению быть обрезаны с помощью 160 х 320 прямоугольник на правой стороне.
Я заметил, что - shouldAutorotateToInterfaceOrientation: метод каждого подвида вызывается только один раз, и что происходит, когда он добавляется к просмотру корневого каталога. В дальнейшем, при повороте устройства, только вид корня получает это метод называется.
Неудивительно, что любые один из - willAnimate вызовов * методов направляются только в целях корня, поэтому, определяя любой из этих методов в подобозрениях бессмысленно.
Эти методы вызываются каждый раз, когда ориентация изменяется на ориентацию, принятой в - shouldAutorotateToInterfaceOrientation: метод. поэтому я решил, что я мог бы chnage свойства кадра моих подвидов оттуда.
Для достижения этой цели я определил следующий метод в моем классе RootViewController:
- (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);
...
}
Я не понимаю, почему свойство кадра не обновляется, но я знаю, что это временное решение работает.
Надеюсь это поможет....