Я столкнулся с той же проблемой, что и здесь. Как ни странно, решение было так просто, как ручная установка рамки вида перед добавлением его в окно.
Просто проверьте ориентацию интерфейса и, если он горизонтальный, переключите ширину и высоту рамки приложения (т. Е. Ширина становится высотой, высота становится шириной).
CGRect frame = [[UIScreen mainScreen] applicationFrame];
switch(controller.interfaceOrientation){
case UIInterfaceOrientationPortrait:
case UIInterfaceOrientationPortraitUpsideDown:
[controller.view setFrame:frame];
break;
case UIInterfaceOrientationLandscapeLeft:
case UIInterfaceOrientationLandscapeRight:
[controller.view setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width)];
break;
}