将支持的界面方向设置为 'All' 只有 MPMoviePlayerController 在 swift 中处于活动状态

Setting supported interface orientation as 'All' only MPMoviePlayerController is active in swift

我正在尝试仅设置界面方向 MPMoviePlayerController 处于活动状态。与此同时,一部电影开始播放。在项目的目标中,我勾选了PortraitLandscape LeftLandscape Right。此外,在 AppDelegate 文件中,我实现了 supportedInterfaceOrientationsForWindow 方法,并尝试检查 presentedViewController 是否为 MPMoviePlayerController。但是,我无法正确实施它。 我怎样才能用正确的方法解决我的问题? 当 MPMoviePlayerController 处于活动状态时更改支持的界面方向的最佳解决方案是什么?

感谢您的回答

国王问好

UIInterfaceOrientationMaskAll 用于 MPMoviePlayerController 因此,在创建控制器时使用 BOOL 变量来确定是否需要接口。

MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]];

覆盖 initWithContentURL 方法并将 AppDelegate BOOL 变量设置为 YES 并在 viewWillDisappear 处将 BOOL 设置为 NO

在Appdelegate.m

#pragma mark --- Orientation Changes for Movie

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

if (self.OrientationNeeded)
{
    return  UIInterfaceOrientationMaskAll;
}
return UIInterfaceOrientationMaskPortrait;
}

流程将是完美的,首先调用您的 init 方法并设置 BOOL 变量,然后调用 supportedInterfaceOrientationsForWindow 方法并在视图退出时恢复 BOOL。