Permitir vídeo em paisagem com o aplicativo somente retrato
Eu tenho um UIWebView incluído em um UIViewController, que é um descendente de UINavigationController. Se parece com isso:
O aplicativo é apenas retrato. Quando reproduzo o vídeo, desejo que o usuário possa girar o dispositivo e ver o vídeo no modo paisagem. Eu uso esse código para permitir:
- (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;
}
E então, no meu UINavigationController (quando o vídeo termina, a exibição não é apresentada em paisagem, mas apenas em retrato):
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
Tudo funciona perfeitamente:
Mas então o vídeo termina de ser reproduzido (ou o usuário toca em 'Concluído') e as telas retornam à visualização subjacente. É o que acontece:
Como você pode ver, a barra de navegação desliza para baixo da barra de status. Além disso, recebo muitos erros de layout automático nos logs:http://pastebin.com/09xHzmgJ
Alguma idéia de como resolver isso?