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


    /**

     *  点击了进度条背景

     */

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

        }

        

    }

    IOS开发
  • 相关阅读:
    PCB 规则引擎之脚本语言JavaScript应用评测
    PCB 挺有意思的基数排序----C#代码实现
    PCB NOSQL MongoDb MI流程指示数据存储结构
    PCB javascript解析Gerber274X格式实现方法
    PCB javascript解析钻孔(Excellon)格式实现方法
    PCB 围绕CAM自动化,打造PCB规则引擎
    PCB Genesis拼SET画工艺边 实现方法(一)
    约瑟夫环的三种解法
    Microsoft edge真香!
    商城规格参数
  • 原文地址:https://www.cnblogs.com/luanmage/p/4877623.html
Copyright © 2020-2023  润新知