移动手势
来源:互联网 发布:java 自旋锁 互斥锁 编辑:程序博客网 时间:2024/05/01 10:11
http://blog.csdn.net/namehzf/article/details/7424882-(IBAction) someMethod{ UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; [panRecognizer setMinimumNumberOfTouches:1]; [panRecognizer setMaximumNumberOfTouches:1]; //[panRecognizer setDelegate:self]; [ViewMain addGestureRecognizer:panRecognizer]; [panRecognizer release];}-(void)move:(id)sender { //[[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations]; [self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]]; CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view]; if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { firstX = [[sender view] center].x; firstY = [[sender view] center].y; } translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY); [[sender view] setCenter:translatedPoint]; if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { CGFloat velocityX = (0.2*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x); CGFloat finalX = translatedPoint.x + velocityX; CGFloat finalY = firstY;// translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) { if(finalX < 0) { //finalX = 0; } else if(finalX > 768) { //finalX = 768; } if(finalY < 0) { finalY = 0; } else if(finalY > 1024) { finalY = 1024; } } else { if(finalX < 0) { //finalX = 0; } else if(finalX > 1024) { //finalX = 768; } if(finalY < 0) { finalY = 0; } else if(finalY > 768) { finalY = 1024; } } CGFloat animationDuration = (ABS(velocityX)*.0002)+.2; NSLog(@"the duration is: %f", animationDuration); [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:animationDuration]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidFinish)]; [[sender view] setCenter:CGPointMake(finalX, finalY)]; [UIView commitAnimations]; }}