移动手势

来源:互联网 发布: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];    }}

原创粉丝点击