0

我有个问题。有一个uiview,通过手势控制(可以水平移动)。虽然这个 uiview 很小,但一切都很好。

在使用 CGAffineTransformScale 缩放它之后,奇怪的事情开始了:Pan 开始奇怪地工作 - 变得不是很敏感。所以在更大的状态下,我可以在PAN开始工作之前在1.5厘米的范围内移动手指。之后,一切正常(UIView 用手指拖动),但不是很顺利。

我认为在 CGAffineTransformScale 之后增加了一些东西,它负责手势。如果我缩小视图,手势就会开始正常工作。

请帮忙!谢谢!

// 过渡

[UIView transitionWithView:pagesView   
                  duration:0.25  
                   options:UIViewAnimationOptionCurveEaseOut + UIViewAnimationOptionAllowUserInteraction + UIViewAnimationOptionBeginFromCurrentState
                animations:^{

                    pagesView.transform = CGAffineTransformScale(pagesView.transform, kResize, kResize);

                }   
                completion:^(BOOL finished){


                }];
4

1 回答 1

2

如果您在视图中询问平移手势识别器的平移,并且视图已缩放到其自然大小的两倍,那么您的手指移动除以 2 来计算平移。想必这不是你想要的。

在未缩放的视图中询问平移手势识别器的平移。我假设您的缩放视图具有未转换的超级视图。尝试将其用作手势识别器的操作:

- (IBAction)pan:(UIPanGestureRecognizer *)panner {
    UIGestureRecognizerState state = panner.state;
    if (state != UIGestureRecognizerStateChanged && state != UIGestureRecognizerStateEnded)
        return;
    UIView *movingView = panner.view;
    UIView *referenceView = movingView.superview;
    CGPoint offset = [panner translationInView:referenceView];
    [panner setTranslation:CGPointZero inView:referenceView];
    CGPoint center = movingView.center;
    center.x += offset.x;
    center.y += offset.y;
    movingView.center = center;
}
于 2012-06-17T19:07:35.463 回答