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;
}
}
* 点击了进度条背景
*/
- (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;
}
}
相关文章推荐
- UITableView的代理方法不执行的解决方案
- UIActivityIndicatorView的详细使用
- 【Android学习笔记】 蓝牙Bluetooth
- 对于动画UIDynamicAnimator的学习
- siliverlight windowless=true 模式下禁止输入中文
- easyui datagrid组件应用
- 10、建造者模式(Builder)
- 【Android】Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT
- CAShapeLayer 结合 UIBezierPath 画圆
- Zynq Reseving Physical Memory Issue
- TAILQ_QUEUE队列
- 用gitUI 提交 github
- jQuey中的$(document).read(function(){})与js中window.onload的区别?
- 错误The request sent by the client was syntactically incorrect ()的解决
- iOS开发UI篇—CALayer简介
- UIButton的UIEdgeInsets功能:设置button上的文字和图片的位置
- Error —— 打出log:finished with non-zero exit value 2
- puer实现前后端分离开发
- Android 数据查询query函数参数解析
- IOS-12-关于GCD多线程:dispatch_async 与 dispatch_get_global_queue 的使用方法