关于手势拖动图标移动图标(附带滑动效果)

- (void)handlePan:(UIPanGestureRecognizer *)recognizer

{

    CGRect rx = [ UIScreen mainScreen ].bounds;

    

    CGPoint translation = [recognizer translationInView:self.view];

    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,

                                         recognizer.view.center.y + translation.y);

    [recognizer setTranslation:CGPointZero inView:self.view];

    

    if (recognizer.state == UIGestureRecognizerStateEnded) {

        

        CGPoint velocity = [recognizer velocityInView:backgroundScrollView];

        CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));

        CGFloat slideMult = magnitude / 200;

        NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult);

        

        float slideFactor = 0.1 * slideMult; // Increase for more of a slide

        CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor),

                                         recognizer.view.center.y + (velocity.y * slideFactor));

//x > 控件宽*1/2 && x < screen.size.width - 控件宽*1/2y同理

        finalPoint.x = MIN(MAX(finalPoint.x, 10), rx.size.width - 10);

        finalPoint.y = MIN(MAX(finalPoint.y, 64 + 10), rx.size.height - 49 - 10);

        

        [UIView animateWithDuration:0.05*slideMult delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{

            recognizer.view.center = finalPoint;

        } completion:nil];

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值