How to limit pan gesture area?

后端 未结 4 1510
感情败类
感情败类 2021-01-03 05:18

I am having my UIImageView onto which I am having another UIView rectangle. By applying pan gesture to UIView rectangle it gets outsi

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-03 05:56

    Try This

    -(void)handleMovementView:(UIPanGestureRecognizer *)recognizer
    {
    CGPoint movement;
    
    if(recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded)
    {
        CGRect rec = recognizer.view.frame;
        CGRect imgvw = self.imgViewCrop.frame;
        if((rec.origin.x >= imgvw.origin.x && (rec.origin.x + rec.size.width <= imgvw.origin.x + imgvw.size.width)))
        {
            CGPoint translation = [recognizer translationInView:recognizer.view.superview];
            movement = translation;
            recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
            rec = recognizer.view.frame;
    
            if( rec.origin.x < imgvw.origin.x )
                rec.origin.x = imgvw.origin.x;
    
            if( rec.origin.x + rec.size.width > imgvw.origin.x + imgvw.size.width )
                rec.origin.x = imgvw.origin.x + imgvw.size.width - rec.size.width;
    
            recognizer.view.frame = rec;
    
            [recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
            [self handleMovementForHandlers:movement];
        }
    }
    }
    

提交回复
热议问题