美文网首页
AVPlayerViewController播放视频(全屏时强制

AVPlayerViewController播放视频(全屏时强制

作者: 楼上那只猫 | 来源:发表于2017-11-02 22:11 被阅读2177次

    最近项目有一部分需要做一个视频播放的功能,找了下,发现AVPlayerViewController可以基本实现所需的功能,但有一点就是AVPlayerViewController全屏时依旧是默认竖屏,必须手动改变设备方向时才会发生旋转,经过各种查资料和摸索,最终实现了默认全屏的方法.代码如下:

    //点击一个按钮,开始播放视频
    - (IBAction)playVideo:(id)sender {
        AVPlayerViewController * vc = [[AVPlayerViewController alloc] init];
        NSString * path = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"MP4"];
        NSURL * url = [NSURL fileURLWithPath:path];
        
        AVPlayerItem * item = [[AVPlayerItem alloc] initWithURL:url];
        vc.player = [[AVPlayer alloc] initWithPlayerItem:item];
        vc.player = [AVPlayer playerWithURL:url];
        vc.entersFullScreenWhenPlaybackBegins = YES;
        vc.exitsFullScreenWhenPlaybackEnds = YES;
        vc.videoGravity = AVLayerVideoGravityResizeAspect;
        vc.view.bounds = CGRectMake(20, 20, 300, 160);
        vc.view.center = self.view.center;
        vc.view.translatesAutoresizingMaskIntoConstraints = YES;
        [self addChildViewController:vc];
        [self.view addSubview:vc.view];
        [vc.player play];
    }
    

    下面的代码是解决全屏时默认横屏
    思路也比较简单,既然全屏时只有手动改变设备方向才能使视频全屏,那么我们就在播放器全屏的时候用代码强制改变一下设备方向(真实设备此时可能依旧是竖屏状态)

    static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController";
    //AVFullScreenViewController是点击全屏按钮时系统 present 的控制器,我们可以通过[window.rootViewController presentedViewController]获取控制器的名字.
    - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
        if ([[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) {
            NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
            [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
            return UIInterfaceOrientationMaskPortrait;
        } else {
            NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
            [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
            return UIInterfaceOrientationMaskPortrait;
        }
    }
    

    相关文章

      网友评论

          本文标题:AVPlayerViewController播放视频(全屏时强制

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