关闭 MPMoviePlayerViewController 后自动旋转 ViewController

Posted

技术标签:

【中文标题】关闭 MPMoviePlayerViewController 后自动旋转 ViewController【英文标题】:Autorotating ViewController after dismissing MPMoviePlayerViewController 【发布时间】:2014-02-24 14:57:11 【问题描述】:

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

我的应用程序仅在纵向模式下运行。唯一需要横向的是视频播放器。当用户点击我的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;

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

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

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

【问题讨论】:

参见***.com/questions/21911151 - 这似乎是MPMoviePlayerController 实现中的一个错误。 【参考方案1】:

感谢@Shubham - Systematix the answer。

我所要做的就是删除所有与自动旋转相关的代码,除了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;
    

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

【讨论】:

以上是关于关闭 MPMoviePlayerViewController 后自动旋转 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

debian关闭log

关闭套接字会关闭流吗?

WINFORM如何关闭主窗口?

流的关闭

如果流没有手动关闭,它啥时候关闭?

在关闭连接之前关闭阅读器