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

本文介绍了如何通过滑动和点击事件来调整音乐播放器的播放时间,包括调整当前播放时间、控制滑块和进度条的位置、以及在不同手势状态下的时间设置逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

 *  点击了进度条背景

 */

- (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;

    }

    

}

转载于:https://www.cnblogs.com/luanmage/p/4877623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值