CGAffineTransformScale +手势

时间:2012-06-17 18:50:19

标签: objective-c ios transform cgaffinetransform gestures

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

使用CGAffineTransformScale缩放后,奇怪的事情开始了: 潘开始工作奇怪 - 变得不是很敏感。 所以在较大的状态下,我可以在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){


                }];

1 个答案:

答案 0 :(得分:1)

如果您要求平移手势识别器在视图中进行平移,并且视图已缩放到其自然大小的两倍,则手指的移动除以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;
}