2

我必须从起点和移动点找到端点。

我正在做动画,View当用户拖动视图时我需要移动,然后我必须将它穿过屏幕并回到原点。

现在我已经使用UISwipeGestureRecognizer来检测 Move 上的滑动。以下是代码。

 UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
    UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
    UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];

    // Setting the swipe direction.
    [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
    [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
    [swipeUp setDirection:UISwipeGestureRecognizerDirectionUp];
    [swipeDown setDirection:UISwipeGestureRecognizerDirectionDown];

    // Adding the swipe gesture on image view
    [_view1   addGestureRecognizer:swipeLeft];
    [_view1 addGestureRecognizer:swipeRight];
    [_view1 addGestureRecognizer:swipeUp];
    [_view1 addGestureRecognizer:swipeDown];

处理滑动

- (void)handleSwipe:(UISwipeGestureRecognizer *)swipe {

    CGPoint movedPoint = [swipe locationInView:swipe.view];

    if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"Left Swipe");

        CGPoint startPoint = _view1.frame.origin;
        //Diffence Moved
        float movedDiffence_X = startPoint.x - movedPoint.x;
        float movedDiffence_Y = startPoint.y - movedPoint.y;
        //How can I find END POINT BASED ON THIS DATA

        [UIView animateWithDuration:1 animations:^{
            _view1.center = CGPointMake(movedDiffence_X *3,movedDiffence_Y *3 );
            _view1.transform = CGAffineTransformMakeRotation(-0.86);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.8 animations:^{
                _view1.center = CGPointMake(84, 240);
                _view1.transform = CGAffineTransformMakeRotation(0.36);
            } completion:^(BOOL finished) {

            }];
        }];

    }
    if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"Right Swipe");
        CGPoint startPoint = _view1.frame.origin;
        //Diffence Moved
        float movedDiffence_X = startPoint.x - movedPoint.x;
        float movedDiffence_Y = startPoint.y - movedPoint.y;

        //How can I find

        [UIView animateWithDuration:1 animations:^{
            _view1.center = CGPointMake(movedDiffence_X *3,movedDiffence_Y *3 );
            _view1.transform = CGAffineTransformMakeRotation(-0.86);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.8 animations:^{
                _view1.center = CGPointMake(84, 240);
                _view1.transform = CGAffineTransformMakeRotation(0.36);
            } completion:^(BOOL finished) {

            }];
        }];
    }

    if (swipe.direction == UISwipeGestureRecognizerDirectionUp) {
        NSLog(@"Up Swipe");

        CGPoint startPoint = _view1.frame.origin;
        //Diffence Moved
        float movedDiffence_X = startPoint.x - movedPoint.x;
        float movedDiffence_Y = startPoint.y - movedPoint.y;

        //How can I find

        [UIView animateWithDuration:1 animations:^{
            _view1.center = CGPointMake(movedDiffence_X *3,movedDiffence_Y *3 );
            _view1.transform = CGAffineTransformMakeRotation(-0.86);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.8 animations:^{
                _view1.center = CGPointMake(84, 240);
                _view1.transform = CGAffineTransformMakeRotation(0.36);
            } completion:^(BOOL finished) {

            }];
        }];
    }
    if (swipe.direction == UISwipeGestureRecognizerDirectionDown) {
        NSLog(@"Down Swipe");

        CGPoint startPoint = _view1.frame.origin;
        //Diffence Moved
        float movedDiffence_X = startPoint.x - movedPoint.x;
        float movedDiffence_Y = startPoint.y - movedPoint.y;

        //How can I find

        [UIView animateWithDuration:1 animations:^{
            _view1.center = CGPointMake(movedDiffence_X *3,movedDiffence_Y *3 );
            _view1.transform = CGAffineTransformMakeRotation(-0.86);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.8 animations:^{
                _view1.center = CGPointMake(84, 240);
                _view1.transform = CGAffineTransformMakeRotation(0.36);
            } completion:^(BOOL finished) {

            }];
        }];
    }

}

在此处输入图像描述

当我滑动 No.1 视图时,我可以在SwipeHandler (handleSwipe) 方法中移动点

所以我也可以检测到滑动方向。但我的问题是我必须通过No.1 View 走出屏幕。为此,我必须找到端点。

那么,如何从起点和 MovedPoint 找到 Endpoint ?

4

1 回答 1

1

这是端点计算的链接。http://library.thinkquest.org/20991/geo/coordgeo.html

于 2013-09-05T11:01:00.107 回答