刚做好一个基于MobileVLCKit的播放器,其中关于滑动屏幕快进和后退的功能困扰已久,在github下载各种播放器来借鉴,终有所得,故而分享之。
见代码:
#pragma mark - 滑动快进后退
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
UITouch *oneTouch = [touches anyObject];
//手指触摸屏幕开始的坐标
beginTouchX = [oneTouch locationInView:oneTouch.view].x;
}
//滑动快进/快退
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
UITouch *oneTouch = [touches anyObject];
// 标志
CGFloat sign = offsetX;
// 手势相对于初始坐标的偏移量
offsetX = [oneTouch locationInView:oneTouch.view].x - beginTouchX;
NSLog(@"%f", offsetX - sign);
// 要改变的进度值1秒
int progressInSec = 1;
if (offsetX - sign > 0 && ([[_movieVCtrl remainingTime] intValue] + progressInSec * 1000) < 0) {
[_movieVCtrl jumpForward:progressInSec];
}
if (offsetX - sign < 0 && ([[_movieVCtrl time] intValue] + progressInSec * 1000) > 0) {
[_movieVCtrl jumpBackward:progressInSec];
}
}
要注意的是,如果快进和后退超过视频播放时间边界,播放器就会crash。