AVPlayerViewController 横屏问题

公司的app是一个只支持竖屏(portrait).项目中图文直播模块有点播视频需求,项目中使用的是AVPlayerViewController.
问题是: 由于app支持竖屏,导致AVPlayerViewController 无法横屏播放.
方法1.

开启app横竖屏模式,然后在每个UIViewController里面添加方法,禁止原来的界面旋转

// 是否支持自动转屏
- (BOOL)shouldAutorotate {
   
    return NO;
}

// 支持哪些屏幕方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    
    return UIInterfaceOrientationMaskPortrait;
}

// 默认的屏幕方向(当前ViewController必须是通过模态出来的UIViewController(模态带导航的无效)方式展现出来的,才会调用这个方法)
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    

    return UIInterfaceOrientationPortrait;
}


工作量巨大,缺点很明显


方法二
经过查阅了相关资料stackflow地址
在appDelegate.m 文件中使用
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {}, app会忽略plist文件中关于 orientation的设置, 从而找到相关类进行设置,
具体操作如下

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    for (UIView *transitionView in window.subviews) {
        if ([transitionView isKindOfClass:NSClassFromString(@"UITransitionView")]) {
            for (UIView *subView in transitionView.subviews) {
                id nextResponder = [subView nextResponder];
                if ([nextResponder isKindOfClass:NSClassFromString(@"AVFullScreenViewController")]) {
                    return UIInterfaceOrientationMaskAllButUpsideDown;
                }
            }
        }
    }
    //避免导航栏隐藏导致bug
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    return   UIInterfaceOrientationMaskPortrait;
}

你可能感兴趣的:(AVPlayerViewController 横屏问题)