IOS视频播放AVPlayer(二) 进阶版

作者: 禾子_____ | 来源:发表于2016-08-04 18:22 被阅读205次

    刚开始只需要一个简单的播放器,后来是需要一个能旋转的,添加弹幕的,还有各种进度,亮度,音量,视频质量等等control的播放器...
    好...进阶吧

    解决: 屏幕想怎么转就怎么转,还要只有播放器页面转,其他页面都不旋转,还能在旋转后输入文字.

    ps: 第一次写的player里只是把view进行了旋转,这样子旋转过来的页面,在输入文字的时候你会发现!天啊,键盘怎么从这里出来.(因为你旋转的不是屏幕)

    解决方法:

    1.添加两个NavigationController (设置方法把viewcontroller装在navigationcontroller里才起作用,母鸡点解)
    2.设置允许转屏的navigationcontroller: ->RotatNavigationController

    #import "RotatNavigationController.h"
    
    @interface RotatNavigationController ()
    
    @end
    
    @implementation RotatNavigationController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
    }
    #pragma mark - 设置控制允许自动转屏和允许的方向
    - (BOOL)shouldAutorotate
    
    {
        return YES; //允许自动转屏
        
    }
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations
    {
        //根据navigation最上一个controller的设置设定支持的方向
        return [self.topViewController supportedInterfaceOrientations];
        
    }
    
    

    3.设置不用转屏的navigationcontroller:->NomalNavigationController

    #import "NomalNavigationController.h"
    
    @interface NomalNavigationController ()
    
    @end
    
    @implementation NomalNavigationController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    }
    
    #pragma mark - 设置控制允许自动转屏和允许的方向
    - (BOOL)shouldAutorotate
    
    {
        return NO; //不允许自动转屏
        
    }
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations
    {
        //设置只允许竖直方向
        return UIInterfaceOrientationMaskPortrait;
        
    }
    
    

    4.最后把需要旋转的播放器的controller设置为RotatNavigationController的rootcontroller打开,然后在播放器的controller设置支持旋转的方向:

    //设置允许转屏的方向
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations{
        return UIInterfaceOrientationMaskAll; //支持所有方向
    }
    //监控屏幕旋转(通过监控屏幕旋转改变player.layer)
        [[NSNotificationCenter defaultCenter] addObserver:self selector:
    @selector(statusBarOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
    
    - (void)statusBarOrientationChange:(NSNotification *)notification{
        
        UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
        
        if (orientation == UIInterfaceOrientationLandscapeRight){ // home键靠右
            
            [self.playerLayer setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
            
        }else if (orientation == UIInterfaceOrientationLandscapeLeft){ // home键靠左
            
            [self.playerLayer setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
            
        }else if (orientation == UIInterfaceOrientationPortrait){ //home在下
            
            [self.playerLayer setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
            
        }else{ //home在上
            
            [self.playerLayer setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
            
        }
        
    }
    
    

    好啦! 这下想怎么转就怎么转,也不影响其他页面了. 键盘也正常弹出来了.
    其中有一点很奇怪的是, 设置允许屏幕旋转相关的在navigationcontroller上才生效,直接设置在controller上无效...望指点一二...


    Demo点我下载 需要的拿去看看


    Snip20160804_2.png

    相关文章

      网友评论

        本文标题:IOS视频播放AVPlayer(二) 进阶版

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