我必须从开始和移动点找到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) {
}];
}];
}
}
当我滑动No.1视图时,我可以在 SwipeHandler (handleSwipe)方法中获得移动点
所以我也可以检测滑动方向。但我的问题是我必须通过No.1浏览屏幕。为此,我必须找到终点。
那么,如何从起点和MovedPoint找到Endpoint?