0

我有一个图像视图,我想在不保持纵横比的情况下捏合以重新缩放。为了做到这一点,我认为这可能是可行的:

  1. 使用两个捏合手势识别器,一个水平拉伸,一个垂直拉伸。
  2. 使用一个捏合识别器,但一个接一个地应用两个变换。

这是我的捏处理功能:

- (void) pinch:(UIPinchGestureRecognizer *)recognizer {
    static CGRect initialBounds;

    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        initialBounds = imageView.bounds;
    }
    CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];

    //scale horizontally
    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, 
                                                     factor-(1.0-factor), 1.0);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);

    //now scale vertically
    zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
    return;
}

出于某种原因,转换只是垂直进行(最后一个)。我尝试将第二个 CGRectApplyAffineTransform 的第一个参数更改为 imageView.bounds,但它仍然不起作用。

谁能告诉我哪里出错了?

此外,当使用两个捏合手势识别器时,会发生同样的事情——实际上只有一个被识别。

谢谢!

4

1 回答 1

0

你的第二个是从 CGAffineTransformIdentity 开始的。相反,传入zt。

于 2012-04-11T19:07:32.323 回答