在解除MPMoviePlayerViewController后自动旋转ViewController

时间:2014-02-24 14:57:11

标签: ios cocoa-touch mpmovieplayercontroller

在您将此问题投票之前,请注意,我已经尝试在stackoverflow上实现所有可用的解决方案。这是问题所在:

我的应用程序仅在纵向模式下运行。唯一需要在景观中的是视频播放器。当用户点击我的TableViewCell时,会调用此代码块:

    MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl];
    [self presentMoviePlayerViewControllerAnimated:moviePlayer];

之后,我需要让用户能够以纵向和横向模式观看视频。完成后,一切都应该回到纵向模式。我试图在AppDelegate.m

中调用此代码块
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;

    if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) {
        orientations = UIInterfaceOrientationMaskAllButUpsideDown;
    }

    return orientations;
}

有了它,一切都很好,除了一件事 - 当视频结束或当用户在横向模式下点击“完成”按钮时,我的视图控制器也会以横向模式显示。

除此之外,我尝试了很多其他方法 - 但似乎没有任何工作。

我会很高兴得到任何帮助!

1 个答案:

答案 0 :(得分:1)

感谢@Shubham - the answer的Systematix。

除了AppDelegate中的此方法外,我所要做的就是删除与自动旋转相关的所有代码:

- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    if ([[window.rootViewController presentedViewController] isKindOfClass:        [MPMoviePlayerViewController class]])
    {
        //NSLog(@"in if part");
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }
    else
    {
        //NSLog(@"in else part");
        return UIInterfaceOrientationMaskPortrait;
    }
}

当我这样做时,一切都像魔术一样!