在Portrait锁定的应用程序中为MPMoviePlayerViewController启用横向

时间:2016-09-09 00:35:47

标签: ios swift autolayout mpmovieplayercontroller

我正在使用swift开发iOS应用程序(仅限纵向)。我有一个视频部分,其中我提供了一个视频列表。当用户点击其中一个时,我使用MPMoviePlayerViewController来呈现电影播放器​​视图。

这是我的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
     let videoId = videos.objectAtIndex(indexPath.row).objectForKey("id") as! String
     let videoPlayerViewController = XCDYouTubeVideoPlayerViewController.init(videoIdentifier: videoId)
     videoPlayerViewController.moviePlayer.scalingMode = .AspectFit
     videoPlayerViewController.moviePlayer.fullscreen = true
     videoPlayerViewController.moviePlayer.controlStyle = .Fullscreen
     videoPlayerViewController.moviePlayer.shouldAutoplay = true
     videoPlayerViewController.moviePlayer.prepareToPlay
     self.presentMoviePlayerViewControllerAnimated(videoPlayerViewController)
}

我在AppDelegate上启用了旋转,如下所示:

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
     //If the video is being presented, let the user change orientation, otherwise don't.
     if var presentedViewController = window?.rootViewController?.presentedViewController {
        // Get the controller on the top of the stack
        while (presentedViewController.presentedViewController) != nil {
              presentedViewController = presentedViewController.presentedViewController!
        }
        if (presentedViewController.isKindOfClass(MPMoviePlayerViewController) && !presentedViewController.isBeingDismissed()) {
              return UIInterfaceOrientationMask.All
        }else{
              return UIInterfaceOrientationMask.Portrait
        }
     }
     return UIInterfaceOrientationMask.Portrait
}

一切似乎都有效但是当我从MPMoviePlayerViewController回来时,我的tableview搞砸了如下:

enter image description here

我认为这个问题是由于AutoLayout造成的,但我不知道如何修复它。希望有人能提供帮助。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为当您打开视频时,即使您的呈现视图控制器是纵向的,它也会被旋转,并且布局会发生变化。

有几种解决方案:

  1. 关闭视频时可以强制使用肖像
  2. 您可以使用新的UIWindow打开视频。这样,在呈现视频时,呈现UIViewController根本不会发生变化。 iOS8 - prevent rotation on presenting viewController