您的位置:首页 > 产品设计 > UI/UE

UITapGestureRecognizer 和UIPanGestureRecognizer的使用,触摸和滑动

2015-10-14 15:39 393 查看
/**

* 点击了进度条背景

*/

- (IBAction)tapProgressBg:(UITapGestureRecognizer *)sender {

CGPoint point = [sender locationInView:sender.view];

// 切换歌曲的当前播放时间

self.player.currentTime = (point.x / sender.view.width) * self.player.duration;

[self updateCurrentTime];

}

////////////滑动

- (IBAction)panSlider:(UIPanGestureRecognizer *)sender {

// 获得挪动的距离

CGPoint t = [sender translationInView:sender.view];

[sender setTranslation:CGPointZero inView:sender.view];

// 控制滑块和进度条的frame

CGFloat sliderMaxX = self.view.width - self.slider.width;

self.slider.x += t.x;

if (self.slider.x < 0) {

self.slider.x = 0;

} else if (self.slider.x > sliderMaxX) {

self.slider.x = sliderMaxX;

}

self.progressView.width = self.slider.center.x;

// 设置时间值

double progress = self.slider.x / sliderMaxX;

NSTimeInterval time = self.player.duration * progress;

[self.slider setTitle:[self strWithTime:time] forState:UIControlStateNormal];

// 显示半透明指示器的文字

[self.currentTimeView setTitle:self.slider.currentTitle forState:UIControlStateNormal];

self.currentTimeView.x = self.slider.x;

if (sender.state == UIGestureRecognizerStateBegan) {

NSLog(@"UIGestureRecognizerStateBegan");

// 停止定时器

[self removeCurrentTimeTimer];

// 显示半透明指示器

self.currentTimeView.hidden = NO;

self.currentTimeView.y = self.currentTimeView.superview.height - 10 - self.currentTimeView.height;

} else if (sender.state == UIGestureRecognizerStateEnded) { // 手松开

// 设置播放器的时间

self.player.currentTime = time;

NSLog(@"UIGestureRecognizerStateEnded");

// 开始定时器

[self addCurrentTimeTimer];

// 隐藏半透明指示器

self.currentTimeView.hidden = YES;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: