Разрешить видео в пейзаже с помощью приложения только для портрета
У меня есть UIWebView, включенный в UIViewController, который является потомком UINavigationController. Это выглядит так:
Приложение только портретное. При воспроизведении видео я хочу, чтобы пользователь мог поворачивать устройство и просматривать видео в альбомном режиме. Я использую этот код, чтобы позволить это:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
id presentedViewController = [self topMostController];
NSString *className = presentedViewController ? NSStringFromClass([presentedViewController class]) : nil;
if ([className isEqualToString:@"MPInlineVideoFullscreenViewController"] ||
[className isEqualToString:@"MPMoviePlayerViewController"] ||
[className isEqualToString:@"AVFullScreenViewController"]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
return UIInterfaceOrientationMaskPortrait;
}
- (UIViewController *)topMostController {
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
И затем в моем UINavigationController (поэтому, когда видео заканчивается, представление не отображается в альбомной ориентации, а только в портретной):
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
Все отлично работает
Но затем видео закончено воспроизводится (или пользователь нажимает «Готово»), и экраны возвращаются к базовому виду, вот что происходит:
Как видите, панель навигации скользит под строкой состояния. Кроме того, я получаю много ошибок автоматической разметки в журналах:http://pastebin.com/09xHzmgJ
Есть идеи о том, как это решить?