Organizational Research By

Surprising Reserch Topic

allow video on landscape with only portrait app using -'ios,objective-c,uiwebview,uinavigationcontroller,screen-rotation'

allow video on landscape with only portrait app  using -'ios,objective-c,uiwebview,uinavigationcontroller,screen-rotation'

I have a UIWebView included in a UIViewController which is a descendant of UINavigationController. It looks like this:

The app is portrait only. When I play the video I want the user to be able to rotate the device and see the video in landscape mode. I use this code to allow it:

- (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;

And then in my UINavigationController (so when the video finishes the view is not presented in landscape but only in portrait):

- (BOOL)shouldAutorotate
    return NO;

- (NSUInteger)supportedInterfaceOrientations
    return UIInterfaceOrientationMaskPortrait;

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    return UIInterfaceOrientationPortrait;

Everything works perfectly:


But then the video is done playing (or the user taps ‚ÄėDone‚Äô) and the screens return to the underlying view, this is what happens:

As you can see, the navigation bar slips under the status bar.
Additionally, I get a lot of auto-layout errors in the logs:

Any idea about how to solve this?

asked Sep 7, 2015 by rajesh
0 votes

Related Hot Questions

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
To avoid this verification in future, please log in or register.