加在self.tabbarcontroller.view上的屏保页面拖动效果实现

来源:互联网 发布:怎么执行mysql数据库 编辑:程序博客网 时间:2024/04/30 16:17

需要继承:

UIGestureRecognizerDelegate


UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizeralloc] initWithTarget:selfaction:@selector(moveView:)];

    panGesture.maximumNumberOfTouches =1;

    panGesture.minimumNumberOfTouches =1;

    panGesture.cancelsTouchesInView =YES;

    panGesture.delegate = self;

    [selfaddGestureRecognizer:panGesture];

    [panGesture release];





- (void)moveView:(UIPanGestureRecognizer *)gestureRecognizer

{

    UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gestureRecognizer;

    if (pan.state ==UIGestureRecognizerStateBegan) {

        CGRect rect = self.frame;

        rect.origin.x =0;

        self.frame = rect;

    }

    

    elseif (pan.state ==UIGestureRecognizerStateChanged) {

       CGPoint point = [pan translationInView:self];

//        CGRect frame = _screenshotBView.frame;

        CGRect frame = self.frame;

        frame.origin.x = point.x >0 ? point.x : 0;

        self.frame = frame;

    }

    

    elseif (pan.state ==UIGestureRecognizerStateEnded || pan.state ==UIGestureRecognizerStateCancelled) {

        BOOL x = self.frame.origin.x >self.frame.size.width *kBoundaryWidthRatio;

        [UIViewanimateWithDuration:kPushAnimationDurationanimations:^{

            CGFloat left  = x ? self.frame.size.width :0;

            CGRect rect = self.frame;

            rect.origin.x = left;

            self.frame = rect;

        } completion:^(BOOL finished) {

            if (x) {

                [self removeFromSuperview];

            }

        }];

    }

}

0 0
原创粉丝点击