美文网首页
AVPlayerViewController 横屏问题

AVPlayerViewController 横屏问题

作者: 蝼蚁撼树 | 来源:发表于2018-10-09 11:24 被阅读0次
    公司的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 横屏问题

          本文链接:https://www.haomeiwen.com/subject/dydeaftx.html