我正在使用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搞砸了如下:
我认为这个问题是由于AutoLayout造成的,但我不知道如何修复它。希望有人能提供帮助。
答案 0 :(得分:1)
这种情况正在发生,因为当您打开视频时,即使您的呈现视图控制器是纵向的,它也会被旋转,并且布局会发生变化。
有几种解决方案:
UIWindow
打开视频。这样,在呈现视频时,呈现UIViewController
根本不会发生变化。
iOS8 - prevent rotation on presenting viewController