0
votes

I display a video using MPMoviePlayerViewController in a tabbar application, the video plays fine in portrait mode but doesn't rotate in landscape mode.

The same code works fine in another project without the tabbar.

I tried to force the autoresizingmask to flexibleWidth and flexibleHeight without success.

If i return YES in the shouldAutorotateToInterfaceOrientation the status bar rotates but not the movie interface.

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return YES;
}

    -(IBAction) showFamilleMovie {
     NSString *videoURL = [[NSBundle mainBundle] 
            pathForResource:@"film1" 
            ofType:@"mp4"];

     MPMoviePlayerViewController* theMoviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:videoURL]];
        theMoviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
     [self presentMoviePlayerViewControllerAnimated:theMoviePlayer];

    }

Do you have any idea where the project could come from ?

Thanks, Vincent

2

2 Answers

1
votes

you can try:

 [yourTabbarController presentModalViewController: theMoviePlayer]

that should allow MoviePlayer to rotate.

1
votes

I had the same problem and the code killer for that was a view added in my appDelegate code. It didn't let the player to rotate properly.

My problem was: To implement the FBConnect library, you need to add a view in your appDelegate to get the object for the FB controller class that you're using the handleOpenURL method (back from Safari when auth is done) and control the callback. I spent an hour until I realized that this view was blocking the rotation.

BTW, don't care about the tab bar. The player should rotate correctly even if you don't have the shouldAutorotateToInterfaceOrientation method added.