modalViewController представленный от UISplitViewController приходит вверх как неправильная ориентация
У меня есть UISplitViewController, который установлен в корневом представлении моего приложения. Когда viewDidLoad вызывается в моем левом контроллере вида, я делаю проверку, а затем представляю модальный контроллер вида, используя следующее: 
SiteConfiguration *config = [[SiteConfiguration alloc] initWithStyle:UITableViewStyleGrouped];
config.firstLoad = YES;
UINavigationController *configNav = [[UINavigationController alloc] initWithRootViewController:config];
if ([Utility isIpad]) {
    configNav.modalPresentationStyle = UIModalPresentationFormSheet;
    configNav.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [[AppDelegate instance].splitViewController presentModalViewController:configNav animated:YES];
} else {
    [self presentModalViewController:configNav animated:YES];
}
Если iPad находится в ландшафтном режиме во время загрузки приложения, modalView отображается с неправильной ориентацией:

shouldAutorotateToInterfaceOrientation:, возвращающий YES в моем SiteConfiguration viewController. Что может быть причиной вот это?2 ответа:
Будьте осторожны с тем, где вы решите представить свой модальный контроллер. У меня был опыт работы с некоторыми пользовательскими модальными контроллерами и настройки ориентации модального контроллера (и его теней!) в
- (void)viewDidLoad:(BOOL)animatedНе всегда вел себя так, как ожидалось.
Поместите свой код (
presentModalViewController:configNav animated:YES) в- (void)viewDidAppear:(BOOL)animatedВместо этого. (Сделайте это также с любым кодом, который устанавливает фрейм вложенных представлений или выполняет любые манипуляции со слоями, например, с теневым слоем и свойствами тени).
Насколько я могу судить, вращение может быть незаметным для подвидов повернутого вида только после
из-за проблем с потоками (один поток может начать рисовать вид вашего субвидения или модального контроллера до того, как вращение будет передано в субвидения (и модальные контроллеры) основным потоком). Кто-то с большим опытом работы с нитями, чем я, мог бы пролить на это больше света.- (void)viewDidLoad:(BOOL)animated
shouldAutorotateToInterfaceOrientation:на самом деле интерфейс не поворачивается, приложение делает это после получения уведомленияUIDeviceOrientationDidChangeNotification.Попробуйте добавить проверку ориентации устройства в методе
-(void) viewDidAppear:(BOOL)animated.Чтобы заставить интерфейс вращаться, используйте следующий фрагмент кода.
UIDeviceOrientation toInterfaceOrientation = [[UIDevice currentDevice] orientation]; [UIApplication sharedApplication].statusBarOrientation = toInterfaceOrientation;