繁体   English   中英

在同一个 UIImageView 上使用 2 个 UIPinchGestureRecognizers

[英]Using 2 UIPinchGestureRecognizers on the same UIImageView

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

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

这是我的捏处理 function:

- (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,但仍然没有用。

谁能告诉我哪里出错了?

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

谢谢!

您的第二个以 CGAffineTransformIdentity 开始。 相反,传入 zt。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM