OStack程序员社区-中国程序员成长平台

标题: ios - 关闭 MPMoviePlayerViewController 后自动旋转 ViewController [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 19:17
标题: ios - 关闭 MPMoviePlayerViewController 后自动旋转 ViewController

在您否决这个问题之前,请注意,我已经尝试实现 stackoverflow 上的所有可用解决方案。问题来了:

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

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

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

- (NSUInteger) applicationUIApplication *)application supportedInterfaceOrientationsForWindowUIWindow *)window
{
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;

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

    return orientations;
}

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

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

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



Best Answer-推荐答案


感谢@Shubham - Systematix 提供 the answer .

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

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

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

关于ios - 关闭 MPMoviePlayerViewController 后自动旋转 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991255/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4