У меня есть 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
Любая идея о том, как решить эту проблему?