Поддержка универсального приложения с книжной ориентацией на iPhone и альбомной ориентацией + портрет на iPad

Мне нужно, чтобы мое приложение было совместимым как на iPad, так и на iPhone. Имеет tabbarController в качестве rootViewController.

В iPad он должен быть доступен как в альбомной, так и в портретной ориентации. Хотя в iPhone мне нужно, чтобы rootView был сам по себе Portrait, и у меня есть некоторые viewController, которые представлены на tabbarController, которые должны быть доступны как в альбомной, так и в Portrait (например, viewController, используемый для воспроизведения видео с Youtube). Поэтому я блокирую вращение tabbarController следующим образом (в подклассе UITabbarController).

# pragma mark - UIRotation Methods

- (BOOL)shouldAutorotate{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}

- (NSUInteger)supportedInterfaceOrientations{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}

Я собираюсь заблокировать вращение rootviewController (tabbarController) и заблокировать все виртуальные каналы в tabbarController (только на iPhone), а представления, которые отображаются в верхней части tabbarController, могут вращаться в соответствии с ориентацией устройства.

ЭТА ПРОБЛЕМА

Все работает, как и ожидалось, пока приложение не будет запущено в iPhone. При запуске в ландшафтном режиме приложение по умолчанию работает в альбомной ориентации и запускает приложение в ландшафтном режиме, который не предназначен. Он должен запускаться в самом портретном режиме, даже если ориентация устройства - альбомная. Поскольку я отключаю автоповорот для iPhone, приложение продолжает работать в альбомной ориентации, что приводит к ошибке. Я попробовал этот метод, чтобы заставить приложение запускаться в портретном режиме в приложении: didFinishLaunchingWithOptions:

#pragma mark - Rotation Lock (iPhone)

- (void)configurePortraitOnlyIfDeviceIsiPhone{
    if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
}

Тем не менее проблема сохраняется. Я разрешил все параметры ориентации в файле info.plist для ключа SupportedInterfaceOrientaions как для iPad, так и для iPhone, поскольку мне нужно, чтобы приложение было в альбомной ориентации для iPhone, даже если только для нескольких viewControllers. Проблема может быть исправлена, если я каким-то образом заставлю это приложение запускаться в книжной ориентации, даже если ориентация устройства - альбомная. Пожалуйста, исправьте меня, если я ошибаюсь в логике, если нет, то любая помощь в запуске приложения в портретном режиме будет принята с благодарностью.

Я уже прошлаэтот вопрос здесь а такжеВот, но пока не получилось.

Благодарю вас

Ответы на вопрос(1)

Ваш ответ на вопрос