Мое приложение принимает только портретную ориентацию, за исключением MPMoviePlayerController
, которую я хочу разрешить пользователю изменять ориентацию.Изменение ориентации интерфейса при нажатии кнопки «Назад»
Итак, я подклассы UINavigationController
и добавил следующий код:
-(BOOL)shouldAutorotate
{
if ([[[self.viewControllers lastObject] presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
{
return YES;
}
else
{
return NO;
}
}
Он отлично работает, позволяя только мое MPMoviePlayerViewController
изменить ориентацию. Проблема заключается в том, что когда пользователь находится в альбомной ориентации и нажимает кнопку done
или воспроизведение заканчивается, оно выдает moviePlayer
и возвращается к представлениюViewController, но в ландшафтном режиме, что приводит к сбою, поскольку этот вид не сделан для альбомной ориентации.
Я пробовал несколько вещей, чтобы вернуться к Portrait
, но не повезло. Я использую раскадровки, если это имеет значение. Я хотел бы изменить ориентацию на портрет на viewWillAppear
, или, может быть, нажав кнопку done
, измените ориентацию.
UPDATE:
Вот обновленный код в моем UINavigationController
подкласса:
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
if ([[[self.viewControllers lastObject] presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
{
return UIInterfaceOrientationMaskAll;
}
else
{
return UIInterfaceOrientationMaskPortrait;
}
}
Теперь, если я делаю вещи в следующем порядке с точки зрения с Play button
.
- Поверните устройство. (он вызывает метод, но экран не вращается, так как он не
MPMoviePlayerController
класс) - Нажмите кнопку воспроизведения
button
. (Он отображает плеер уже в ландшафтном режиме). - Нажмите кнопку «Назад». (Он выталкивает плеер и правильно показывает вид на портретном режиме)
Теперь, если изменить порядок:
- Нажмите кнопку воспроизведения. (удерживая устройство на обычной портретной позиции).
- Поверните устройство. (он правильно поворачивает видеопроигрыватель, показывающий видео).
- Нажмите кнопку «Назад». (Она появляется игрок, но на этот раз, вид находится в ландшафтном режиме, который не является ожидаемым поведением)
Perfect, Great Решение :), спасибо –