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

刚开始只需要一个简单的播放器,后来是需要一个能旋转的,添加弹幕的,还有各种进度,亮度,音量,视频质量等等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点我下载 需要的拿去看看


IOS视频播放AVPlayer(二) 进阶版_第1张图片
Snip20160804_2.png

你可能感兴趣的:(IOS视频播放AVPlayer(二) 进阶版)