Permitir video en horizontal con la aplicación de solo retrato
Tengo un UIWebView incluido en un UIViewController que es descendiente de UINavigationController. Se parece a esto:
La aplicación es solo retrato. Cuando reproduzco el video quiero que el usuario pueda rotar el dispositivo y ver el video en modo horizontal. Yo uso este código para permitirlo:
- (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;
}
Y luego, en mi UINavigationController (cuando el video termina, la vista no se presenta en horizontal sino solo en vertical):
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
Todo funciona a la perfección:
Pero luego el video termina de reproducirse (o el usuario toca "Listo") y las pantallas vuelven a la vista subyacente, esto es lo que sucede:
Como puede ver, la barra de navegación se desliza debajo de la barra de estado. Además, recibo muchos errores de diseño automático en los registros:http://pastebin.com/09xHzmgJ
¿Alguna idea sobre cómo resolver esto?