iOS小窗播放 手势拖动

```

#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小窗播放 手势拖动)