presentedViewController 改变呈现视图控制器的方向,破坏布局

presentedViewController changes orientation of presenting view controller, breaks layout

我有一个 ViewController A 呈现 MPMoviePlayerViewController。我想强制视频播放器横向播放,所以我使用这个:

在 AppDelegate 中,supportedInterfaceOrientationsForWindow

if let viewController = self.window!.rootViewController?.presentedViewController {
            if let playbackController = viewController as? MPMoviePlayerViewController {
                return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue) | Int(UIInterfaceOrientationMask.LandscapeRight.rawValue)
            }
            return Int(UIInterfaceOrientationMask.Portrait.rawValue)
        }

在我的视频播放器子类中,我设置了支持的方向:

override func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue) | Int(UIInterfaceOrientationMask.LandscapeRight.rawValue)
    }

然而,当视频播放器以横向模式关闭时,View Controller A 卡在横向模式中。如何防止 View Controller A 切换到横向,并保持纵向?

只需添加

override func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}

每个需要它的视图控制器并避免基于 AppDelegate 的方向支持。