如何从起始点和滚动点查找端点坐标

时间:2013-09-02 09:16:22

标签: ios endpoint uiswipegesturerecognizer

我必须从开始和移动点找到Endpoint。

我正在做动画,当用户拖动视图时我需要移动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) {

            }];
        }];
    }

}

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

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