美文网首页
iOS 小窗手势拖动 小窗播放

iOS 小窗手势拖动 小窗播放

作者: 流浪猫121 | 来源:发表于2017-07-25 09:58 被阅读0次
    
    #import "SVP.h"
    
    #import "LBHLivePlayerViewController.h"
    
    #import "LBHLivePlayerView.h"
    
    @interface LBHLivePlayerViewController (){
    
    SVPVideo *_video;
    
    SVPPlayerList *_playList;
    
    CGPoint pointLeftTop;
    
    BOOL _viderIsEnd;
    
    }
    
    @property (assign, nonatomic) CGPoint beginpoint;
    
    @property (assign, nonatomic) UIPanGestureRecognizer* pan;
    
    @end
    
    @implementation LBHLivePlayerViewController
    
    //
    
    static NSString *SVPMode = nil;
    
    - (void)viewDidLoad {
    
    [super viewDidLoad];
    
    self.pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    
    [self.view addGestureRecognizer:self.pan];
    
    NSNotificationCenter * orientChange = [NSNotificationCenter defaultCenter];
    
    [orientChange addObserver:self selector:@selector(orientChangeLive:) name:UIDeviceOrientationDidChangeNotification object:nil];
    
    // [self.video addObserver:self forKeyPath:@"isEnd" options:NSKeyValueObservingOptionNew context:nil];
    
    }
    
    -(void)orientChangeLive:(NSNotification*)notification{
    
    UIDeviceOrientation  orient = [UIDevice currentDevice].orientation;
    
    switch (orient)
    
    {
    
    case UIDeviceOrientationFaceUp:
    
    [self pansmall];
    
    break;
    
    case UIDeviceOrientationPortrait:
    
    [self pansmall];
    
    break;
    
    case UIDeviceOrientationLandscapeLeft:
    
    [self panlang];
    
    break;
    
    case UIDeviceOrientationUnknown:
    
    [self pansmall];
    
    break;
    
    case UIDeviceOrientationLandscapeRight:
    
    [self panlang];
    
    break;
    
    default:
    
    [self pansmall];
    
    break;
    
    }
    
    }
    
    //-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    
    //
    
    //    if (self.video.isEnd) {
    
    //        _viderIsEnd=YES;
    
    //        }else{
    
    //            self.alertIsEndBtn.hidden=YES;
    
    //        }
    
    //
    
    //    }
    
    //}
    
    -(void)panlang{
    
    [self.view removeGestureRecognizer:self.pan];
    
    [self.skinView addGestureRecognizer:self.pan];
    
    }
    
    -(void)pansmall{
    
    [self.skinView removeGestureRecognizer:self.pan];
    
    [self.view addGestureRecognizer:self.pan];
    
    }
    
    - (void)setPlayWindowStatus:(SVPlayerWindowsStatus)aWindowStatus
    
    {
    
    if (_playWindowStatus != aWindowStatus)
    
    {
    
    _playWindowStatus = aWindowStatus;
    
    switch (_playWindowStatus) {
    
    case SVPlayerOrientationPortraitNormal:
    
    {
    
    self.view.frame =CGRectMake(0, 0, Screen_Width, Screen_Height);
    
    }
    
    break;
    
    case SVPlayerOrientationPortraitMini:
    
    {
    
    [UIView animateWithDuration:0.2 animations:^{
    
    self.view.frame =CGRectMake(100,50,90,160);
    
    }];
    
    }
    
    break;
    
    case SVPlayerOrientationLandscapeNormal:
    
    {
    
    self.view.frame =CGRectMake(0, 0, Screen_Width, Screen_Height);
    
    }
    
    break;
    
    case SVPlayerOrientationLandscapeMini:
    
    {
    
    [UIView animateWithDuration:0.2 animations:^{
    
    self.view.frame =CGRectMake(Screen_Width-10-180,50,160,102);
    
    }];
    
    }
    
    break;
    
    default:
    
    break;
    
    }
    
    }
    
    }
    
    - (Class)playerSkinClass{
    
    return [LBHLivePlayerView class];
    
    }
    
    -(void)pan:(UIPanGestureRecognizer *)panGes{
    
    if (_playWindowStatus == SVPlayerOrientationPortraitMini || _playWindowStatus == SVPlayerOrientationLandscapeMini)
    
    {
    
    UIView *piece = [panGes view];
    
    CGPoint translation = [panGes translationInView:[piece superview]];
    
    if ([panGes state] == UIGestureRecognizerStateBegan || [panGes state] == UIGestureRecognizerStateChanged) {
    
    //            [UIView animateWithDuration:0.2 animations :^{
    
    //
    
    //                [piece setCenter:CGPointMake([piece center].x + translation.x,
    
    //                                            [piece center].y + translation.y)];
    
    //
    
    //                [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    //            }];
    
    [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    
    [piece setCenter:CGPointMake([piece center].x + translation.x,
    
    [piece center].y + translation.y)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    } completion:^(BOOL finished) {
    
    }];
    
    }
    
    if([panGes state] == UIGestureRecognizerStateEnded){
    
    if (_playWindowStatus == SVPlayerOrientationLandscapeMini )
    
    {
    
    [UIView animateWithDuration:0.2 animations:^{
    
    if(([piece center].x + translation.x)<90){
    
    [piece setCenter:CGPointMake(90,[piece center].y + translation.y)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].x + translation.x)>Screen_Width-90) {
    
    [piece setCenter:CGPointMake(Screen_Width-90,[piece center].y + translation.y)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].y + translation.y)>Screen_Height-51) {
    
    [piece setCenter:CGPointMake([piece center].x + translation.x,Screen_Height-51)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].y + translation.y)<51) {
    
    [piece setCenter:CGPointMake([piece center].x + translation.x,51)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    }];
    
    }
    
    if (_playWindowStatus == SVPlayerOrientationPortraitMini){
    
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    
    [UIView animateWithDuration:0.2 animations:^{
    
    if(([piece center].x + translation.x)<45){
    
    [piece setCenter:CGPointMake(45,[piece center].y + translation.y)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].x + translation.x)>Screen_Width-45) {
    
    [piece setCenter:CGPointMake(Screen_Width-45,[piece center].y + translation.y)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].y + translation.y)>Screen_Height-80) {
    
    [piece setCenter:CGPointMake([piece center].x + translation.x,Screen_Height-80)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    if (([piece center].y + translation.y)<80) {
    
    [piece setCenter:CGPointMake([piece center].x + translation.x,80)];
    
    [panGes setTranslation:CGPointZero inView:[piece superview]];
    
    }
    
    }];
    
    }
    
    }
    
    }else{
    
    if([self.skinView.playerLoadingView isLoading]==NO && self.video.isEnd==NO && [LPLejuUtility isCouldConnectedNet]){
    
    self.fullScreen=YES;
    
    [super pan:panGes];
    
    }
    
    }
    
    }
    
    - (void)tapGestureHandler:(id)sender
    
    {
    
    if([self skinView].inChatMode)
    
    {
    
    if([self skinView].inVoiceRecordMode)
    
    {
    
    return;
    
    }
    
    if ([[[UIDevice currentDevice] systemVersion] intValue] < 6)
    
    {
    
    UITapGestureRecognizer *ges = (UITapGestureRecognizer*)sender;
    
    CGPoint point = [ges locationInView:self.view];
    
    UIView* result = [ges.view hitTest:point withEvent:nil];
    
    if(result.frame.size.height < ges.view.frame.size.height)
    
    {
    
    return;
    
    }
    
    }
    
    [self skinView].inChatMode = NO;
    
    return;
    
    }
    
    }
    
    @end
    
    

    相关文章

      网友评论

          本文标题:iOS 小窗手势拖动 小窗播放

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