UIGesture视图随手势移动

原理是获取手指在屏幕中的位置,上demo:

- (void)panHandle:(UIPanGestureRecognizer *)gesture

{

    switch (gesture.state)

    {

        case UIGestureRecognizerStateBegan: {

            _shimmeringView.frame = CGRectMake([gesture locationInView:self.view].x, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);

        }

            break;

        case UIGestureRecognizerStateChanged: {

            _shimmeringView.frame = CGRectMake([gesture locationInView:self.view].x, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);

        }

            break;

        case UIGestureRecognizerStateEnded: {

 

            if (_shimmeringView.frame.origin.x > self.view.frame.size.width/2){

                [UIView animateWithDuration:0.3f animations:^{

                    _shimmeringView.frame = CGRectMake(self.view.frame.size.width, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);

                } completion:^(BOOL finished) {

                    [self sleepDidEnd];

                }];

            } else {

                [UIView animateWithDuration:0.3f animations:^{

                    _shimmeringView.frame = CGRectMake(0, _shimmeringView.frame.origin.y, _shimmeringView.frame.size.width, _shimmeringView.frame.size.height);

                } completion:^(BOOL finished) {

                    

                }];

            }

        }

            break;

        case UIGestureRecognizerStateCancelled:

        {

            NSLog(@"====oh NO===滑动被取消了");

            

            /*********************************************

             * 不排除有,pan事件被中断的可能,处理同stateEnded *

             *********************************************/

            

        }

            break;

        default:

            break;

    }

    

}

posted @ 2015-11-04 16:17  老茶叶  阅读(92)  评论(0)    收藏  举报